国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

php 防止惡意刷新頁(yè)面方法總結(jié)

2024-05-04 21:58:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

惡意刷新就是不停的去刷新提交頁(yè)面,導(dǎo)致大量無(wú)效數(shù)據(jù)了,下面我們來(lái)總結(jié)一下php 防止惡意刷新頁(yè)面方法總結(jié).

防止惡意刷頁(yè)面的原理是:要求在頁(yè)面間傳遞一個(gè)驗(yàn)證字符串,在生成頁(yè)面的時(shí)候,隨機(jī)產(chǎn)生一個(gè)字符串,做為一個(gè)必須參數(shù)在所有連接中傳遞,同時(shí)將這個(gè)字符串保存在session中.

點(diǎn)連接或者表單進(jìn)入頁(yè)面后,判斷session中的驗(yàn)證碼是不是與用戶(hù)提交的相同,如果相同,則處理,不相同則認(rèn)為是重復(fù)刷新,在處理完成后將重新生成一個(gè)驗(yàn)證碼,用于新頁(yè)面的生成,代碼如下:

  1. <?php  
  2. session_start();  
  3. $k=$_GET['k'];  
  4. $t=$_GET['t'];  
  5. $allowTime = 1800;//防刷新時(shí)間  
  6. $ip = get_client_ip();  
  7. $allowT = md5($ip.$k.$t);  
  8. if(!isset($_SESSION[$allowT]))  
  9. {  
  10. $refresh = true;  
  11. $_SESSION[$allowT] = time();  
  12. }elseif(time() - $_SESSION[$allowT]>$allowTime){  
  13. $refresh = true;  
  14. $_SESSION[$allowT] = time();  
  15. }else{  
  16. $refresh = false;  
  17. }  
  18. ?> 

ie6提交兩次我也碰到過(guò),大致是用圖片代替submit時(shí),圖片上有個(gè)submit(),這樣會(huì)提交兩次,如果只是submit鈕我沒(méi)碰到過(guò)提交兩次的情況.

現(xiàn)在整理一下:

方法基本上前面幾位說(shuō)得差不多,接收的頁(yè)即2.php分為兩部分,一部分處理提交過(guò)來(lái)的變量,一部分顯示頁(yè)面,處理變量完畢用header( "location:".$_SERVER[ 'PHP_SELF '])跳轉(zhuǎn)到自身頁(yè),本部分要做判斷,如果沒(méi)有post的變量就跳過(guò),當(dāng)然也可以跳到別的頁(yè)面.

跳到別的頁(yè)面返回時(shí)會(huì)有問(wèn)題,建議做在一個(gè)php文件里,如果上頁(yè)穿過(guò)來(lái)得變量不符合要求可以強(qiáng)制返回,代碼如下:

  1. <script>  
  2. history.go(-1);  
  3. </script> 

只說(shuō)了一下大體思路,也許高手們不會(huì)遇到此類(lèi)問(wèn)題,可是并不是每個(gè)人都是高手.

2.php的流程,代碼如下:

  1. if(isset($_POST))  
  2. {     接收變量  
  3.     if(變量不符合要求)  
  4.           <script> history.go(-1); </script>  
  5.     else  
  6.         操作數(shù)據(jù)  
  7.           ...  
  8.         if(操作完成)  
  9.           header( "location: ".$_SERVER[ 'PHP_SELF ']);  
  10. }  
  11. <script   language= "JavaScript ">    
  12. <!--    
  13.  javascript:window.history.forward(1);    
  14. //-->    
  15. </script> 

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 安远县| 巴楚县| 平山县| 南丹县| 阿勒泰市| 海阳市| 志丹县| 崇仁县| 汶上县| 界首市| 石台县| 高密市| 广灵县| 西盟| 项城市| 宁乡县| 台州市| 湄潭县| 虎林市| 棋牌| 南宁市| 新源县| 漳浦县| 武定县| 敦化市| 贡嘎县| 油尖旺区| 荣成市| 正镶白旗| 福安市| 永年县| 阿城市| 昌平区| 紫阳县| 渑池县| 孝感市| 惠东县| 虎林市| 额尔古纳市| 贡山| 荥经县|