本文目錄一覽:
- 1、php高手來,求禁止ip並且轉發url代碼
- 2、求一段PHP限制IP及IP段訪問的代碼,拜託了。。
- 3、有人用軟體反覆向我的網站post請求,php程序如防止來自同一IP的攻擊?
- 4、PHP中限制IP段訪問、禁止IP提交表單的代碼
- 5、限制ip地址段訪問的php代碼
php高手來,求禁止ip並且轉發url代碼
?php
//加IP訪問限制
if(getenv(‘HTTP_CLIENT_IP’) strcasecmp(getenv(‘HTTP_CLIENT_IP’), ‘unknown’)) {
$userip = getenv(‘HTTP_CLIENT_IP’);
} elseif(getenv(‘HTTP_X_FORWARDED_FOR’) strcasecmp(getenv(‘HTTP_X_FORWARDED_FOR’), ‘unknown’)) {
$userip = getenv(‘HTTP_X_FORWARDED_FOR’);
} elseif(getenv(‘REMOTE_ADDR’) strcasecmp(getenv(‘REMOTE_ADDR’), ‘unknown’)) {
$userip = getenv(‘REMOTE_ADDR’);
} elseif(isset($_SERVER[‘REMOTE_ADDR’]) $_SERVER[‘REMOTE_ADDR’] strcasecmp($_SERVER[‘REMOTE_ADDR’], ‘unknown’)) {
$userip = $_SERVER[‘REMOTE_ADDR’];
}
$ip_arr = explode(‘.’, $userip);
#限制的ip段,假設是192.168.*.*
if (!(($ip_arr[0] == ‘192’ $ip_arr[1]==’168′) )){
header(“”);
exit;
}else
{
header(“”);
exit;
}
?
求一段PHP限制IP及IP段訪問的代碼,拜託了。。
正確代碼
function check_ip(){
$ALLOWED_IP=array(‘192.168.2.*’,’127.0.0.1′,’192.168.2.49′);
$IP=getIP();
$check_ip_arr= explode(‘.’,$IP);//要檢測的ip拆分成數組
#限制IP
if(!in_array($IP,$ALLOWED_IP)) {
foreach ($ALLOWED_IP as $val){
if(strpos($val,’*’)!==false){//發現有*號替代符
$arr=array();//
$arr=explode(‘.’, $val);
$bl=true;//用於記錄循環檢測中是否有匹配成功的
for($i=0;$i4;$i++){
if($arr[$i]!=’*’){//不等於* 就要進來檢測,如果為*符號替代符就不檢查
if($arr[$i]!=$check_ip_arr[$i]){
$bl=false;
break;//終止檢查本個ip 繼續檢查下一個ip
有人用軟體反覆向我的網站post請求,php程序如防止來自同一IP的攻擊?
無論使用PHP還是Apache(.htaccess)的手段,這個IP的請求還是被徹底執行了。CPU還是被佔用了,雖然可能會佔用的稍微少一點。
所以通過伺服器設置,比如在Linux使用iptables防火牆。或者使用其他的前置的硬體防火牆。過濾這種同一IP在短時間內的不間斷訪問。這才是有效的手段。
PHP中限制IP段訪問、禁止IP提交表單的代碼
我們只要在feedback.php中添加下面的代碼進行判斷就可以了。
注意:下邊只是一個PHP限制IP的實例代碼,如果您打算應用到CMS中,請自行修改,或者如果您正在使用DEDECMS,可以聯繫本站。
複製代碼
代碼如下:
?php
//加IP訪問限制
if(getenv(‘HTTP_CLIENT_IP’)
strcasecmp(getenv(‘HTTP_CLIENT_IP’),
‘unknown’))
{
$userip
=
getenv(‘HTTP_CLIENT_IP’);
}
elseif(getenv(‘HTTP_X_FORWARDED_FOR’)
strcasecmp(getenv(‘HTTP_X_FORWARDED_FOR’),
‘unknown’))
{
$userip
=
getenv(‘HTTP_X_FORWARDED_FOR’);
}
elseif(getenv(‘REMOTE_ADDR’)
strcasecmp(getenv(‘REMOTE_ADDR’),
‘unknown’))
{
$userip
=
getenv(‘REMOTE_ADDR’);
}
elseif(isset($_SERVER[‘REMOTE_ADDR’])
$_SERVER[‘REMOTE_ADDR’]
strcasecmp($_SERVER[‘REMOTE_ADDR’],
‘unknown’))
{
$userip
=
$_SERVER[‘REMOTE_ADDR’];
}
//限制ip
if
($userip==’27.37.188.128′){
header(“location:”);//被禁止後跳轉到腳本之家站
exit;
}
//限制ip段
$ip_arr
=
explode(‘.’,
$userip);
#限制的ip段,假設是192.168.*.*
if
(!(($ip_arr[0]
==
‘192’
$ip_arr[1]==’168′)
)){
header(“location:”);//被禁止後跳轉到腳本之家素材站
exit;
}else{
header(“location:”);//正常IP則直接訪問腳本之家首頁
exit;
}
?
限制ip地址段訪問的php代碼
?php
$userip = $_SERVER[‘REMOTE_ADDR’]; //獲得用戶ip
$userips = explode(“.”, $userip);//把獲得的ip切開成數組
if(($userips[0]=195 $userips[0]=195)($userips[1]=163 $userips[1]=163)($userips[2]=079 $userips[2]=072)($userips[3]=255 $userips[3]=000)){
echo “您的ip不符!”;
exit;
}else{
echo “通過驗證!”;
}
?
我的思路就是這樣的
獲得用戶的IP 用”.”分割成數組
再將 限制IP斷 分別用”.”分割成數組
然後判斷用戶IP是否在這個IP斷內(分別判斷四個元素是否在這個範圍里)
……
下面是藍色理想里找到的一個供你參考
——————————————————
?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;$ icount($ ip_lib);$ i++){
if(ereg($ thenetip,$ ip_lib[$ i])){
$ allow=1;
break;
}
}
if ($ allow==1)
{
echo “驗證通過”;
}
else {
echo “scriptlocation.href=’Error.php’;/script”;
}
?
原創文章,作者:IYDMU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/329626.html