Heim >php教程 >php手册 >php 解决表单重复提交实现方法介绍

php 解决表单重复提交实现方法介绍

WBOY
WBOYOriginal
2016-05-25 16:40:071325Durchsuche

重复提交是我们开发中会常碰到的一个问题,除了我们使用js来防止表单的重复提交,同时还可以使用php来防止重复提交.

例1,代码如下:

<?php
/*
 * php中如何防止表单的重复提交
*/
session_start();
if (emptyempty($_SESSION[&#39;ip&#39;])) { //第一次写入操作,判断是否记录了IP地址,以此知道是否要写入数据库
    //开源代码phprm.com
    $_SESSION[&#39;ip&#39;] = $_SERVER[&#39;REMOTE_ADDR&#39;]; //第一次写入,为后面刷新或后退的判断做个铺垫
    //...........//写入数据库操作
    
} else { //已经有第一次写入后的操作,也就不再写入数据库
    echo &#39;请不要再次刷新和后退&#39;; //写一些已经写入的提示或其它东西
    
}
?>

具体原理:session范围变量token来防止.

1.开启session:session_start();

2.如果有表单提交,代码如下:

if (isset($token))

token以hidden的形式包含在form当中,代码如下:

<input type="hidden" name="token" value="<?php echo $token; ?>" />

3.如果是重复提交表单,代码如下:

<?php
if ($_SESSION["token"] != $token) {
    // 不让重复提交,在此处理
    // header("location:".$_SERVER[&#39;PHP_SELF&#39;]);
    
} else {
    // 正常的表单提交,在此处理
    // echo "已提交";
    
}
?>

4.设置token值,代码如下:

<?php
$token = mt_rand(0, 1000000); . $_SESSION[&#39;token&#39;] = $token;


文章网址:

随意转载^^但请附上教程地址。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn