试试$_SERVER['REMOTE_ADDR']如果服务器在外网的话,
那么访问的话获得的是外网的IP,无法获取内网IP.
希望回答对你有帮助,如果有疑问,请继续追问
答题不易,互相理解,您的采纳是我前进的动力,感谢您.
本文所述php实例可以完成获取局域网所有用户的电脑IP和主机名、及mac地址的功能,对于php程序设计人员有一定的参考借鉴价值.完整代码如下:
php
$bIp
=
gethostbyname($_ENV['COMPUTERNAME']);
//获取本机的局域网IP
echo
"本机IP:",$bIp,"\n";
"本机主机名:",gethostbyaddr($bIp),"\n\n\n";
//gethostbyaddr
函数可以根据局域网IP获取主机名
//默认网关IP
explode('.',$bIp);
$mask
$ipd1
.
"."
;
exec('arp
-a',$aIp);
//获取局域网中的其他IP
foreach(
$aIp
as
$ipv)
{
if(strpos($ipv,'接口')
!==
false)
{//一下显示的IP是否是当前局域网中的
而不是其他的类型
可以在cmd下试一下命令
$bool
false;
if(strcmp($arr[0],$bIp)
==
0)
true;
}
else
if($bool)
$str
preg_replace('/\s◆/',
'|',
$ipv);
$sArr
explode('|',$str);
if($sArr[1]
'Internet'
||
empty($sArr[1]))
continue;
//去除默认网关
if(strcmp($mask
".1",
$sArr[1])
//去除组播IP
list($cIp)
explode('.',
$sArr[1]);
if($cIp
$cIp
"IP地址:|",$sArr[1],"|\n";
"主机名:",gethostbyaddr($sArr[1]),"\n";
"\n\n";
该程序是在cli模式下运行的,在浏览器上应该也可以
php获取局域网中的用户ip功能就完成了,主要用到的是php的exec函数
和window的arp
-a
命令
其中获取本机IP:gethostbyname($_ENV['COMPUTERNAME'])
有别于以往的写法,感兴趣的朋友可以继续深入研究一下.
获取主机名函数:gethostbyaddr(IPd)
这个函数功能也很强大.
这个跟你的路由设置和访问方式有关.
//服务器在局域网的话,那么显示的则是内网IP
$onlineip?=?$_SERVER['REMOTE_ADDR'];
echo?$onlineip;
$ip=$_SERVER["REMOTE_ADDR"];
SetCookie("ip","$ip");
$ip==isset($_COOKIE['ip']);
我这个得到的是外网IP
echo '内网';
内网A类网段只开列了常见的部分,其余的你自己增减
以上就是土嘎嘎小编为大家整理的php获取局域网ip相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!