好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php 表单令牌防止重复提交原理 - php高级应用

php 表单令牌防止重复提交原理

在生成表单的时候,为防止表单重复提交。在form表单中添加一个隐藏的input标签来存放令牌,等到提交的时候,和表单一起提交,提交以后和生成的session值作比较,通过这种方式来达到防止重复提交的目的,简要代码如下.

例子,session方法,代码如下:

<?php  if ( $_POST ){       if ( $_SESSION [ "token" ]!= $_POST [ "token" ]){           die ( "非法提交!" );      } else {           echo   "安全提交!" ;      }  }  $_SESSION [ "token" ]=md5(rand(1,999)); //没生成一次表单,修改一次值,不要在post处理前修改它,不然无法比对 www.phpfensi.com   ?>  //开源代码phpfensi.com   <form action= "1.php"  method= "post" >  <input type= "hidden"  value= "<?php echo $_SESSION[" token "]?>"  name= "token" >  <input type= "submit"  value= "提交"  />  </form> 

例子,cookie+md5方法,代码如下:

<?php    $value  =  $_COOKIE [[value]];  //读取上一次设置的Cookie值     if ( count ( $_POST )) {    $long  = [];    while (list( $key , $value )=each( $_POST )) $long .= $value ;    $hash  = md5( $long );    setcookie([value], $hash ,time()+60*60);  //重新设置cookie     }    if ( $value != $hash ) {    // 如果两次的MD5值不一样就对数据进行进一步操作     }  else  {    //如果两次MD5的值相同,告知用户提交失败 ,为重复提交表单     }    ?> 

查看更多关于php 表单令牌防止重复提交原理 - php高级应用的详细内容...

  阅读:39次