先把代码贴上
<?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="ip.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>";
echo "您的IP地址未经授权,不允许订餐!";
//die();
exit();
}
?> ip.ini 中是加了127.0.0
Warning: Call-time pass-by-reference has been deprecated in D:\PHPnow-1.5.6\htdocs\ip\ip.php on line 32Notice: Undefined variable: netip in D:\PHPnow-1.5.6\htdocs\ip\ip.php on line 20
这是第一个问题,我直接调试的时候出现的,使用的php套件是PHPnow-1.5.6如果我把这个代码放到dz论坛的插件目录下 就不行了 。总是获取不了IP地址。总是提示 echo "您的IP地址未经授权,不允许订餐!";
目录是。。D:\PHPnow-1.5.6\htdocs\dz\source\plugin\study_dz_dingcan我是在study_dz_dingcan.inc.php include(ip.php) 这个文件的,我的ip.ini也放在ip文件夹下,请问我上面的代码$filename="ip.ini"; //定义操作文件 对吗?
还是要写成 $filename="ip/ip.ini"; //定义操作文件 但是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="ip.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>";
echo "您的IP地址未经授权,不允许订餐!";
//die();
exit();
}
?> ip.ini 中是加了127.0.0
Warning: Call-time pass-by-reference has been deprecated in D:\PHPnow-1.5.6\htdocs\ip\ip.php on line 32Notice: Undefined variable: netip in D:\PHPnow-1.5.6\htdocs\ip\ip.php on line 20
这是第一个问题,我直接调试的时候出现的,使用的php套件是PHPnow-1.5.6如果我把这个代码放到dz论坛的插件目录下 就不行了 。总是获取不了IP地址。总是提示 echo "您的IP地址未经授权,不允许订餐!";
目录是。。D:\PHPnow-1.5.6\htdocs\dz\source\plugin\study_dz_dingcan我是在study_dz_dingcan.inc.php include(ip.php) 这个文件的,我的ip.ini也放在ip文件夹下,请问我上面的代码$filename="ip.ini"; //定义操作文件 对吗?
还是要写成 $filename="ip/ip.ini"; //定义操作文件 但是2种都试了,都不能达到效果,请高手帮忙解决啊,分不够继续追加。
解决方案 »
- 什么是PHP语言结构?
- 老程序员请进!急急急!PHP能否自动发送POST表单(到另外一个网站)(目的获取表单处理页面处理表单后的显示内容)?必须POST方式
- 有关mysql : select count(*) from XXX的问题
- 求救!php中如何安装pecl扩展包!!!
- mysql安装后出现问题
- 换个方式问:ftp_nlist()只能列出ftp服务器中的文件,我想列目录怎么办??
- 怎么屏蔽文件的地址?
- 前几天还好好的,今天就怎么也不认session了!急救
- php导出为word
- 问题:PHP连接FTP中,如何保存resource以复用
- PHP输出PDF文档内容
- 问一个关于58同城的技术问题
用strpos不是更好?比较每一个ip。ini里面的ip是否被包含在用户的ip当中不就行了,何必要去explode,还要ereg?
假设ip.ini
127.0.0
192.168.0用户的ip是
192.111.11.111你检查
127.0.0和192.168.0是否在192.111.11.111中含有不就行了,不需要那么复;或者
$user_ip='192.111.11.111';
$user_ip_p3 =substr($user_ip,0, strrpos($user_ip,'.'));//取前三位$config_text = "\n".file_get_contents('ip.ini');
if(strpos($config_text,"\n".$user_ip_p3 )!==false)
{
die('blocked');
}