❶ php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例

本文所述php实例可以完成获取局域网所有用户的电脑IP和主机名、及mac地址的功能,对于php程序设计人员有一定的参考借鉴价值。完整代码如下:
<?php
$bIp
=
gethostbyname($_ENV['COMPUTERNAME']);
//获取本机的局域网IP
echo
"本机IP:",$bIp,"\n";
echo
"本机主机名:",gethostbyaddr($bIp),"\n\n\n";
//gethostbyaddr
函数可以根据局域网IP获取主机名
//默认网关IP
list($ipd1,$ipd2,$ipd3)
=
explode('.',$bIp);
$mask
=
$ipd1
.
"."
.
$ipd2
.
"."
.
$ipd3
;
exec('arp
-a',$aIp);
//获取局域网中的其他IP
foreach(
$aIp
as
$ipv)
{
if(strpos($ipv,'接口')
!==
false)
{//一下显示的IP是否是当前局域网中的
而不是其他的类型
可以在cmd下试一下命令
$bool
=
false;
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)))/',$ipv,$arr);
if(strcmp($arr[0],$bIp)
==
0)
{
$bool
=
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])
==
0)
{
continue;
}
//去除同网关下255的IP
if(strcmp($mask
.
".255",
$sArr[1])
==
0)
{
continue;
}
//去除组播IP
list($cIp)
=
explode('.',
$sArr[1]);
if($cIp
>=
224
&&
$cIp
<=
239)
{
continue;
}
echo
"IP地址:|",$sArr[1],"|\n";
echo
"MAC地址:",$sArr[2],"\n";
echo
"主机名:",gethostbyaddr($sArr[1]),"\n";
echo
"\n\n";
}
}
}
该程序是在cli模式下运行的,在浏览器上应该也可以
php获取局域网中的用户ip功能就完成了,主要用到的是php的exec函数
和window的arp
-a
命令
其中获取本机IP:gethostbyname($_ENV['COMPUTERNAME'])
有别于以往的写法,感兴趣的朋友可以继续深入研究一下。
获取主机名函数:gethostbyaddr(IPd)
这个函数功能也很强大。

❷ php如何获取局域网内网的IP

这个跟你的路由设置和访问方式有关。

假设你的服务端在10.10.50.1,公网IP都是8.8.8.8。
假设你的客户端在 10.10.50.100-199,出口公网IP是4.4.4.4

如果你的客户端以公网的形式访问,如http://8.8.8.8/ip.php,则服务端获得IP都是4.4.4.4。
反之以内网的形式访问,如http://10.10.50.1/ip.php,获得的IP就是10.10.50.1XX。

解决的办法,要么就是使用内网地址访问,要么使用设置一下路由,指定10.10.50.100-199访问的话,不走公网,走10网段。

❸ php 怎么获得内网IP即局域网内本机宽带连接IP

参考如下:
<?php
$onlineip = $_SERVER['REMOTE_ADDR'];//服务器在局域网的话,那么显示的则是内网IP 。
echo $onlineip;
?>
如果服务器在外网的话,那么访问的话获得的是外网的IP,无法获取内网IP。

❹ 如何配置局域网服务器,令同事能访问我做的PHP网站。

在apache的侦听端口列表中加入你的IP
apache的httpd.conf文件中默认
Listen :80
你在后面追加一行
Listen ip:80
然后重启apache,如果你使用专http://ip能访问了,那么你们同事就属也能访问了

❺ php 怎么获取内网IP

ip地址来分 IPv4和IPV6两个版本。

127.0.0.1或者192.168.0.1之类源的,属于IPV4的格式

127.0.0.1转换为IPv6就是 ::1

IPv6具体的格式写法,你搜索一下了解一下。

另外 ,服务端获取ip地址,是相对的。比如你在局域网内建一个服务器,在程序里获取的ip地址,就是客户端在局域网的ip ,一般是类似 192.168.0.101 之类的,大公司的话可能 10.x.x.x

局域网的ip地址,可以直接在网络适配器上看到

而在inter网,也就是大网络上,服务端获取的ip地址,是你的连网设备获取到的公网ip ,一般一个局域网内的主机,相对于因特网上的服务器,显示的都是公网地址。

公网ip没有在本机电脑上直接显示。会显示在路由或者连网设备上。也可以通过网络搜索 ip地址,会显示你的公网ip

所以,假设一个局域网内,有两台电脑同时访问一个网上的服务器,服务器是没办法给两台电脑区分开ip地址的,显示的是一样的。只是可能得到的设备信息不一样(如:浏览器的useragent)