PHP防刷新的方法

来源:互联网 发布:淘宝战略先锋77正品吗 编辑:程序博客网 时间:2024/05/02 04:34

1.session记录
submit.php为发送页面,在这个页面上设置一个session变量,,并作为隐藏域和表单一起发送到,submitdeal.php页面..在服务器端把post上来的隐藏变量和服务器端记录的session变量进行对比,,比如一样,则写入数据库并清除session,这样用户刷新页面,两个值不相等提示错误或跳转
优点:不用用户输入验证码,
缺点:表单容易被复制
2.验证码
原理和第一种一样,,只是session数据不作为隐藏域提交,,而是让用户填写,大多数网站都彩用,,有文字验证码和图片验证码,,图片验证码安全性高..别
3.IP绑定
提交数据后,先从IP表里检索客户端IP,如果有,并且没有过期,那么报错,否则写入数据库,然后再取客房端IP,把IP写入数据库,,
4.cookie
客户提交后处理程序先检索客户端有没有设置cookie,如果有,则不重复提交,如果没有,则写数据,,再写个cookie;

例:


方式一

<?php      
session_start();     
$k=$_GET['k'];     
$t=$_GET['t'];     
$allowTime = 1800;//防刷新时间     
$ip = get_client_ip();     
$allowT = md5($ip.$k.$t);     
if(!isset($_SESSION[$allowT]))     
{     
    $refresh = true;     
    $_SESSION[$allowT] = time();     
}elseif(time() - $_SESSION[$allowT]>$allowTime){     
    $refresh = true;     
    $_SESSION[$allowT] = time();     
}else{     
    $refresh = false;     
}     
?>   

方式二

<?php
session_start();
$allow_sep = "30000";
if (isset($_SESSION["post_sep"]))
{
if (time() - $_SESSION["post_sep"] < $allow_sep)
{
exit("请不要反复刷新");
}
else
{
$_SESSION["post_sep"] = time();
}
}
else
{
$_SESSION["post_sep"] = time();
}
?>

方式三

<?
session_start();
if(!empty($_POST[name])){
   $data = $_POST[name];
   $tag = $_POST[tag];
   if($_SESSION[status]==$tag){
     echo $data;
   }else{
     echo "不允许刷新!";
   }
}
$v = mt_rand(1,10000);
?>
<form method="post" name="magic" action="f5.php"><input type="hidden"
name="tag" value="<?=$v?>"><input type=text name="name"><input type="submit" value="submit">
</form>
<?
echo $v;
$_SESSION[status] = $v;
?>

 

原创粉丝点击