一、php防止站外远程提交表单的方法 例子一:我们每一次打开提交页面生成一个token然后保存在sess

 一、php防止站外远程提交表单的方法

 

例子一:我们每一次打开提交页面生成一个token然后保存在session中,当表单提交时我们来判断当前的token值与session是否一致,如果是的就是正常提交否则就是无效提交了。

具体代码如下:

<?php     

 session_start();           

 if ($_POST['submit'] == "go"){     

     //check token     

     if ($_POST['token'] == $_SESSION['token']){     

         //strip_tags     

         $name = strip_tags($_POST['name']);     

         $name = substr($name,0,40);     

         //clean out any potential hexadecimal characters     

         $name = cleanHex($name);     

         //continue processing....     

     }else{     

         //stop all processing! remote form posting attempt!     

     }     

 }     
 $token = md5(uniqid(rand(), true));     

 $_SESSION['token']= $token;     

      

  function cleanHex($input){     

     $clean = preg_replace("![\][xX]([A-Fa-f0-9]{1,3})!", "",$input);     

     return $clean;     

 }     

 ?>     

< form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">     

< p><label for="name">Name</label>     

< input type="text" name="name" id="name" size="20" maxlength="40"/></p>     

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

< p><input type="submit" name="submit" value="go"/></p>     

< /form>

 

例子二:增加验证码

if($_POST['vcode'] != get_vcode())

 {

     exit('验证码校验失败,无法入库');

 }

 

二、php 解决和避免form表单重复提交的方法

 

 利用js设置按钮点击后变成灰色

$(document).ready(function(){

  $(input:submit).click(){

      setTimeout(function(){obj.disabled=true;},100)

  };

});

 

利用session

加载提交的页面时候,生成一个随机数,

$code = mt_rand(0,1000000);


存储在表单的隐藏输入框中:

< input type="hidden" name="code" value="“>
<?php

session_start();

if(isset($_POST['code'])) {  

    if($_POST['code'] == $_SESSION['code']){

         // 重复提交表单了

    }else{  

         $_SESSION['code'] =$_POST['code']; //存储code

    }  

}?>

 利用cookies

if(isset($_POST['submit'])){

    setcookie("tempcookie","",time()+30);  

    header("Location:".$_SERVER[PHP_SELF]);exit();  

} 

if(isset($_COOKIE["tempcookie"])){  

    setcookie("tempcookie","",0);echo "您已经提交过表单";  

}

 

上一篇:JS常用代码合集一

下一篇:php各种优酷,土豆,视频封装类

评论列表
发表评论
称呼
邮箱
网址
验证码(*)
热评文章
相关阅读