宝马娱乐在线112222 > 网络应用 > php 表单令牌防止重复提交原理

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

浏览次数:112 时间:2019-10-01

原理是
如果数据通过了上边的两次验证,说明数据是合法有效的数据。这时候我们把提交的数据串接为一个字符串,并用MD5加密后得到一个MD5的值,接着我们把这个值通过Cookie放进客户端,当用户下一次提交表单的时候我们就重新操作这一步,并且读出Cookie中的MD5值,进行比较,如果相同就可断定用户提交两次提交的表单是相同的,否则替换这个Cookie!

例子,session方法

 

 代码如下

 代码如下

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

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

例子,cookie+md5方法

 代码如下

<?php

$value = $_宝马娱乐在线112222,COOKIE[“value”]; //读取上一次设置的Cookie值

if(count($_POST)) {

$long = “”;

while(list($key,$value)=each($_POST))$long.=$value;

本文由宝马娱乐在线112222发布于网络应用,转载请注明出处:php 表单令牌防止重复提交原理

关键词:

上一篇:没有了

下一篇:没有了