PHP限制IP訪問及提交次數的方法

來源:互聯網
上載者:User
這篇文章主要介紹了PHP實現限制IP訪問及提交次數的方法,涉及php針對用戶端來訪IP的擷取、判斷以及結合session記錄IP訪問次數等相關操作技巧,需要的朋友可以參考下

本文執行個體講述了PHP實現限制IP訪問及提交次數的方法。分享給大家供大家參考,具體如下:

一、原理

提交次數是肯定要往資料庫裡寫次數這個資料的,比如使用者登陸,當使用者出錯時就忘資料庫寫入出錯次數1,並且出錯時間,再出錯寫2,當滿比如5次時提示不允許再登陸,請明天再試,然後用DateDiff計算出錯時和now()的時間,如果大於24就再開放讓他試。

封IP的話特別是給IP斷就比較簡單了,

先說給IP段開放的情況:先取出客戶訪問的IP,為瞭解釋方便,設有IP192.168.6.2

現要開放IP段為192.168.*.*的斷,給個比較容易看懂的代碼吧:

url=split(ip,".") '這裡的ip為用戶端IPfsip="192.168.*.*"  '允許的段,可以從資料庫取出,也可以這麼定義fip=split(fsip,".")if fip(0)=url(0) and fip(1)=url(1) thenresponse.write "您的IP被封"else response.write "可以通過"end if

其實禁某IP就跟上面的方法一樣。或者乾脆從資料庫裡取出IP和用戶端的直接比較就好了。

一般會把資料庫裡的IP段設為雙精確度型的,那麼就需要這些:

if Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" thenIP=Request.ServerVariables("REMOTE_ADDR")elseIP=Request.ServerVariables("HTTP_X_FORWARDED_FOR")end ifsip=IPcip=split(ip,".")ip=256*256*256*cip(0)+256*256*cip(1)+256*cip(2)+cip(3)-1

上面的情況都是在資料庫操作方面,沒涉及cookies等。

其實封IP不是很理想,會影響無辜的人,有關的或許是因為動態IP逃過了。

二、封裝執行個體

<?phpclass IP{ //擷取客戶IP地址  function getIpAdr(&$ip){    $ip1=getenv("HTTP_X_FORWARDED_FOR");    $ip2=getenv("HTTP_CLIENT_IP");    $ip3=getenv("REMOTE_ADDR");    if($ip1&&$ip1!='unknow')      $ip=$ip1; else if($ip2&&$ip2!='unknow')      $ip=$ip2; else if($ip3&&$ip3!='unknow')      $ip=$ip3; else      $ip='127.0.0.1';  }}function get_netip($myip){ //只留客戶IP地址的前三位  $temp=explode(".",$myip);  $netip.=$temp[0];  $netip.=".";  $netip.=$temp[1];  $netip.=".";  $netip.=$temp[2];  return $netip;}$filename="test.ini";  //定義操作檔案$ip_lib=file($filename); //讀取檔案資料到數組中$allow=0;$IP=new IP;$thisip="";$IP->getIpAdr(&$thisip);$thenetip=get_netip($thisip);for ($i=0;$i<count($ip_lib);$i++){  if(ereg($thenetip,$ip_lib[$i])){    $allow=1;    break;  }}if ($allow==1){  echo "驗證通過";} else {  echo "<script>location.href='Error.php';</script>";}

三、限制輸入次數

1.頁面需要先session_start();2.點擊登陸的時候做判斷,如果確定使用者輸入的密碼是錯誤的

if(使用者的密碼是錯誤的){  if(!empty($_SESSION['login_error'])){    if($_SESSION['login_error'] == 3){      exit("這裡已經是第三次了");    } else{      $_SESSION['login_error'] = $_SESSION['login_error']++;    }  } else{    $_SESSION['login_error'] = 1;  }}

相關推薦:

PHP實現限制IP訪問及提交次數代碼分享

分享php中如何?限制IP訪問以及提交次數的方法

php限制ip位址範圍的實現方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.