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高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did30070