很多站长朋友们都不太清楚php判断ip是否被占用,今天小编就来给大家整理php判断ip是否被占用,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php判断是否为域名或者ip 2、 如何用php判断ping某个ip是否通 3、 php判断是否是有效IP地址的方法 4、 限制ip地址段访问的php代码 5、 如何查看IP地址是否被占用 6、 PHP 怎样判断一个ip地址是否可以连接,比如说:192.168.0.1可以访问,192.168.0.115不能访问 php判断是否为域名或者ip你这个方法是通过判断域名或者ip被“.”分隔成数组后的最后一个元素是否是数字实现的?
应该是有问题的吧,比如aaa.111这个应该不是合法的ip,你这个就通过了。
我觉得还是使用正则比较好。
如何用php判断ping某个ip是否通一般环境不会设置给你调用系统命令的权限的,你可用用php的通信来判断。
例如:
file_get_contents 第三个参数有个语句句柄可以设置超时时常,比如3秒,多次超过3秒超时说明ping不通;
还有curl,能模拟的情况更丰富些
php判断是否是有效IP地址的方法提供下面两个方法,供选择:
function checkIp($ip)
{
$arr = explode('.',$ip);
if(count($arr) != 4){
return false;
}else{
for($i = 0;$i < 4;$i++){
if(($arr[$i] <'0') || ($arr[$i] > '255')){
return false;
}
}
}
return true;
}
function isIp($ip) {
if (preg_match('/^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))$/', $ip)) {
return 1;
} else {
return 0;
}
}
限制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;$ 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>";
}
?>
如何查看IP地址是否被占用在通过局域网(例如校园网、公司内网)上网时,首先需要设定一个可用的IP。那么局域网中哪些IP没有被占用呢?可以包着碰运气的心理,设置好IP再看有没有冲突报告,但这种办法实在是太笨了!下面笔者就给你带来三个察看IP地址是否可用的办法。
简单PING法
网络中查看某个计算机是否在线的最简单的办法就是ping该计算机对应的IP地址。例如想查看192.168.1.1这台计算机是否已经在线。点击“开始/运行”输入“cmd”进入命令行命令提示符状态,在命令行模式中输入“ping192.168.1.1即可,如果ping得通就说明该IP地址对应的计算机已经在线。
ARP缓存法
如果仅仅使用ping法来判断网络中计算机的存在是不太严谨的,因为防火墙或者过滤规则,会使ping无法返回正确的信息,也就是说如果按照介绍的方法ping了对方IP地址不通,但对方仍然可能会在线,不过通过ARP缓存可以解决这个问题。
防火墙或者过滤包的方法也无法ARP的查看,远程计算机不返回Ping成功的消息但会告诉本地计算机该IP地址对应的MAC地址。这样就可以通过ARP缓存信息来查看了。如果能看到该IP地址对应了MAC地址说明该计算机在线,相应的MAC地址没有出现在ARP缓存表中则表明该计算机不在线。首先按照介绍的ping法来检测某IP地址的计算机是否在线,然后在ping返回信息为不通的情况下,在命令提示符下输入“arp–a”查看本地ARP缓存列表,看对应的IP是否得到了MAC地址信息。
批处理法
利用上述原理,可以通过建立批处理的办法,批量检测局域网中在线的机器。例如要查看192.168.1.这个网段中有哪些地址在线。在桌面上点鼠标右键新建一个文本文件后输入如下代码:
FOR/L%%iIN(0,1,255)Doping192.168.114.%%i-n1
arp-a->IP.txt
将该文件保存为.bat文件,双击这个批处理文件将自动搜索网段中的所有IP,并且将发现出的ARP信息都保存到ip.txt文件中。笔者探测了192.168.114.1到192.168.114.10这十个IP得到了如图1的文档。可以看出,两个IP返回了MAC地址,说明它们是在线的。
PHP 怎样判断一个ip地址是否可以连接,比如说:192.168.0.1可以访问,192.168.0.115不能访问一般的局域网内都用192.168开头.
ip的通用形式是:xxx.xxx.xxx.xxx
xxx的大小不能超过256.并且根据xxx的大小范围,对ip分了类.
192.168.开头的就是c类网.
如果有网关,一般是192.168.0.1
也就是说,局域网内ip不能直接连到互联网上,要通过这个网关地址的服务器才能连出去.
互联网上有很多局域网,192.168.开头的ip可以多次被使用(但同一局域网内的ip不能重复).
关于php判断ip是否被占用的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php判断ip是否被占用 php查询ip的详细内容...