怎么在php中利用会话禁止页面重复刷新

  介绍

本篇文章为大家展示了怎么在php中利用会话禁止页面重复刷新,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

如何防止页面重复刷新,在php环境下可以利用会话来轻松实现。

b。php的代码

& lt; php ?//只能通过发布方式访问,   _SERVER if  ([& # 39; REQUEST_METHOD& # 39;],==, & # 39;得到# 39;),   {头(& # 39;HTTP/1.1, 404, Not 发现# 39;);,死(& # 39;亲,页面不存在& # 39;);},   session_start (),,   $ fs1=$ _POST[& # 39;一个# 39;];,   $ fs2=$ _POST [& # 39; b # 39;];,//防刷新时间,单位为秒,   30 $ allowTime =,,,//读取访客ip,以便于针对ip限制刷新,/*获取真实ip开始*/,   if (!大敌;function_exists (& # 39; GetIP& # 39;)),   {,   function  GetIP (),   {,   static  ip 美元;=,零,,   if  (ip 美元;!==,NULL),   {,   return 知识产权;美元,   },   if (收取($ _SERVER)),   {,   _SERVER if (收取([& # 39;HTTP_X_FORWARDED_FOR& # 39;])),   {,   时间=美元arr 爆炸(& # 39;& # 39;,$ _SERVER [& # 39; HTTP_X_FORWARDED_FOR& # 39;]),,/*,取X-Forwarded-For中第x个非未知的有效IP字符?,*/,   foreach  (arr 美元;as  xip美元),   {,   xip 美元;=,修剪(xip美元),,   if  (xip 美元;!=,& # 39;未知# 39;),   {,   $ ip =时间xip美元;大敌;;   休息,,   },   },   },   _SERVER elseif (收取([& # 39;HTTP_CLIENT_IP& # 39;])),   {,   _SERVER ip 美元;=,[& # 39;HTTP_CLIENT_IP& # 39;];,   },   else    {,   _SERVER if (收取([& # 39;REMOTE_ADDR& # 39;])),   {,   _SERVER ip 美元;=,[& # 39;REMOTE_ADDR& # 39;];,   },   else    {,   ip 美元;=,& # 39;0.0.0.0 # 39;,,   },   },   },   else    {,   if  (getenv (& # 39; HTTP_X_FORWARDED_FOR& # 39;)),   {,   $ ip =, getenv (& # 39; HTTP_X_FORWARDED_FOR& # 39;),,   },   elseif  (getenv (& # 39; HTTP_CLIENT_IP& # 39;)),   {,   $ ip =, getenv (& # 39; HTTP_CLIENT_IP& # 39;),,   },   else    {,   $ ip =, getenv (& # 39; REMOTE_ADDR& # 39;),,   },   },   preg_match (“/[\ d \] {7、15}/,,, ip,美元,美元onlineip),,   ip 美元;=,!,空($ onlineip [0]), ?, onlineip美元[0],:,& # 39;0.0.0.0 # 39;,,   return 知识产权;美元,   },   },/*获取真实ip结束*/,   reip 美元;=,GetIP (),,//相关参数md5加密,   $ allowT =, md5 (reip。fs1美元。fs2美元),,   如果(!收取($ _SESSION [$ allowT])) {,   $ _SESSION [allowT美元],=,时间(),,   },   else 如果(时间(),安康;$ _SESSION [$ allowT]——在allowTime美元){,   $ _SESSION [allowT美元],=,时间(),,   },//如果刷新过快,则直接给出404头头以及提示,   else {头(& # 39;HTTP/1.1, 404, Not 发现# 39;);,死(& # 39;来自& # 39;$ ip强生# 39;的亲,您刷新过快了& # 39;);},   ?在

代码很简单,无非是把ip、以及通过帖子方式提交到需要防刷新页面的数据经过md5加密后写入会话中,再通过存储的会话来判断刷新时间间隔从而决定是否允许刷新。需要说明的是“$ fs1=$ _POST[& # 39;一个# 39;);“,“$ fs1=$ _POST[& # 39;一个# 39;);“两个参数是指其他页面通过发布方式提交到需要防刷新页的参数。之所以除了ip之外还要加这些参数的原因是为了区别不同的帖子结果。(实际上所谓的防刷新也就是防止某一页面被反复提交。)

更具体的说,比如上述代码放在b.php页面的开的头,我们在。html页面有一个如下表单:

代码:

& lt; ! DOCTYPE>,   & lt; html>,   & lt; head>,   & lt; meta  http-equiv=癈ontent-Type",内容=皌ext/html;, charset=utf-8",/祝辞,   & lt; title> b.html,   时间/head> & lt;   & lt; body>,   & lt; form  action=癰.php",方法=皃ost",在,   & lt; input 类型=癶idden", id=癮", name=癮" https://www.yisu.com/zixun/, value=" "/>      <按钮名称=" " type="提交">提交>   

可以看到这个页面提交的a和b两个参数正是前面b.php中的2个参数(实际上应该反过来说,由提交页面的参数来决定)。在前面php的代码中,已经确定只能通过帖子访问被提交数据的页面,所以直接输入地址会得到一个404头的错误页面,只能通过发布方式来得到页面,同时刷后新的时候会自己带上参数地址,这样就实现了同一页面每个ip的防止刷新效果。

怎么在php中利用会话禁止页面重复刷新