+ -
当前位置:首页 → 问答吧 → ip 验证程序

ip 验证程序

时间:2007-06-15

来源:互联网

晚上也没话多少时间写的一点东西,觉得还是不错的。跟大家分享下!
复制PHP内容到剪贴板
PHP代码:
/*
作者:林建炫 [飘枫] Create 2007-06-14 珠海
*/
function StopIp($ip,$str)
{
    if(stristr(",".$str.",",$ip))return true;//如果在在范围内就不允许
    if(stristr(",".$str.",",",*,") || stristr(",".$str.",",",*"))return true;//如果首次出现,*. 或者 ,* 表示所有站点都不允许
    $iplist = explode(",",$str);
    $ip = explode(".",$ip);
    for($i = 0;$i<count($iplist);$i++)
    {
        if(eregi($ip[0]."\.(".$ip[1]."|\*)\.?(".$ip[2]."|\*)?\.?(".$ip[3]."|\*)?",$iplist[$i]))return true;
    }
}
//测试
$ip_str = "127.0.0.1,192.1.1.*,202.*,127.*,123.*";//这个是屏蔽的ip列表 以","隔开,如果要屏蔽所有ip请用* 如果想屏蔽127.开头的ip格式为 127.*
$ip = "137.0.0.2"; //需要验证的Ip
if(StopIp($ip,$ip_str))echo 1;

喜欢的朋友请顶顶,你们的支持是我的动力

作者: linzhenxuan   发布时间: 2007-06-14

帮顶,学习

作者: xwfoo   发布时间: 2007-06-14

路过, 支持开源,  支持楼主

作者: cator   发布时间: 2007-06-15

我追求短的艺术,呵呵,发出来更短的方法。6行搞定,带ip格式验证.
复制PHP内容到剪贴板
PHP代码:
$ip_str = "127.0.0.1,192.1.1.*,202.*,127.*,123.*,142.*,*";
$ip = "127.0.0.254"; 
function StopIp($ip,$ip_str)
{
    if(strcmp(long2ip(sprintf('%u',ip2long($ip))),$ip))return false;//验证ip如果不是ip格式就返回假
    $ip = explode(".",$ip);
    if(eregi("(,\*,|,\*\.|,\*)|(".$ip[0]."\.(".$ip[1]."|\*)\.?(".$ip[2]."|\*)?\.?(".$ip[3]."|\*)?)",",".$ip_str.","))return true;
}
if(StopIp($ip,$ip_str))echo 1;

作者: linzhenxuan   发布时间: 2007-06-15

支持几位,楼上的果真更有艺术。

作者: gently   发布时间: 2007-06-16

方法纠正.经过20W数据测试,使用正常
function StopIp($ip,$ip_str)
{
        if(strcmp(long2ip(sprintf('%u',ip2long($ip))),$ip))return false;//验证ip如果不是ip格式就返回假
        $ip = explode(".",$ip);
        if(eregi("(,\*,|,\*\.|,\*)|,(".$ip[0]."\.(".$ip[1]."|\*)\.?(".$ip[2]."|\*)?\.?(".$ip[3]."|\*),?)",",".$ip_str.","))return true;
}

作者: linzhenxuan   发布时间: 2007-06-16

好东东,顶了!
顺便问问
楼上用什么测试工具测试的啊?小弟很想了解关于测试工具,还望告知,谢谢了!

作者: hesper   发布时间: 2007-06-21

很容易啊,测试。ie 就可以了
程序就是这样写

for($i=1;$i<=255;$i++)
{
for($k=1;$k<=255;$K++)
{
for($a=1;$a<=255;$a++)
{
$str .= "192.{$i}.{$k}.{$a}";
}
}
}
这样就能生产 255*255*255 很大的Ip数据量了

作者: linzhenxuan   发布时间: 2007-07-05