Heim  >  Artikel  >  Backend-Entwicklung  >  php防止恶意刷新 快速刷新的代码

php防止恶意刷新 快速刷新的代码

WBOY
WBOYOriginal
2016-07-25 09:00:151072Durchsuche
php如何防止被别人恶意刷新页面呢?本文为大家提供三个参考方法,有需要的朋友,可以看看。

首先,我们来分析下可选择的几种方式。

1、session记录 submit.php为发送页面,在这个页面上设置一个session变量,并作为隐藏域和表单一起发送到,submitdeal.php页面.在服务器把post来的隐藏变量和服务器端记录的session变量进行对比,比如一样,则写入数据库并清除session,这样用户刷新页面,两值不等时则提示错误或跳转到指定的页面。 优点:不用用户输入验证码 缺点:表单容易被复制

2.验证码 原理同上,只是session数据不作为隐藏域提交,而是让用户填写,大多数网站都彩用,有文字验证码和图片验证码,图片验证码安全性高一些。

3.IP绑定 提交数据后,先从IP表里检索客户端IP,如果有,并且没有过期,那么报错,否则写入数据库,然后再取客房端IP,把IP写入数据库。

4.cookie 客户提交后处理程序先检索客户端有没有设置cookie,如果有,则不重复提交,如果没有,则写数据,,再写个cookie;

以下的三个示例代码,均采用第一种session控制的方法,因为不确定用户会不会禁用cookie。

方法1:

<?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;         
} //by bbs.it-home.org        
?> 

方法2:

<?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();  
} //by bbs.it-home.org 
?>  

方法3:

<?  
session_start();  
if(!emptyempty($_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;  
?> 


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn