ホームページ >バックエンド開発 >PHPチュートリアル >PHP はコード共有を実装して IP アクセスと送信時間を制限します
この記事では、PHPでのIPアクセスと送信回数を制限する方法、つまりPHPによるクライアントの訪問IPの取得と判断、およびセッションと組み合わせたIPアクセス数の記録などの関連操作スキルを中心に紹介します。困っている方の参考になれば幸いです。
1. 原則
たとえば、ユーザーがログインするとき、ユーザーがエラーを起こした場合、データベースはエラーの数 1 を書き込むのを忘れます。エラーが発生した時刻を入力し、エラーが 5 回に達すると、「明日もう一度ログインしてください」というメッセージが表示され、DateDiff を使用してエラーが発生してから発生するまでの時間を計算します。 now() を実行します。24 より大きい場合は、再試行させます。
IP をブロックすること、特に IP を切断することは比較的簡単です。
まず IP セグメントを開く状況について説明します。説明の便宜上、まず、IP 192 を取り出します。 .168.6.2
次に、IP を開く必要があります。セグメントは 192.168.*.* です。理解しやすいコードを示します:
url=split(ip,".") '这里的ip为客户端IP fsip="192.168.*.*" '允许的段,可以从数据库取出,也可以这么定义 fip=split(fsip,".") if fip(0)=url(0) and fip(1)=url(1) then response.write "您的IP被封" else response.write "可以通过" end if
実際、IP を禁止することは次と同じです。上記の方法。または、単純にデータベースから IP とクライアントの間の直接比較を取り出します。
一般に、データベース内の IP セグメントは倍精度に設定されているため、次のものが必要です:
if Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" then IP=Request.ServerVariables("REMOTE_ADDR") else IP=Request.ServerVariables("HTTP_X_FORWARDED_FOR") end if sip=IP cip=split(ip,".") ip=256*256*256*cip(0)+256*256*cip(1)+256*cip(2)+cip(3)-1
上記の状況はすべてデータベース操作に関するものであり、Cookie などは含まれません。
実際、IP のブロックはあまり理想的ではなく、無実の人々に影響を与える可能性があります。関連する理由は、動的 IP が漏洩することである可能性があります。
2. カプセル化の例
<?php class 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>"; }
3. 入力数を制限する
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 アクセスを制限する 指定された IP アクセスのみを許可する 許可 * ワイルドカード フィルター IP_PHP チュートリアル
以上がPHP はコード共有を実装して IP アクセスと送信時間を制限しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。