本文目錄一覽:
- 1、PHP如何獲取內網IP
- 2、php實現獲取局域網所有用戶的電腦IP和主機名、及mac地址完整實例
- 3、php獲取局域網IP
- 4、php如何獲取局域網內網的IP
- 5、php怎麼獲取服務器內網ip?
- 6、php怎麼獲取公網ip和內網ip
PHP如何獲取內網IP
試試$_SERVER[‘REMOTE_ADDR’]如果服務器在外網的話,
那麼訪問的話獲得的是外網的IP,無法獲取內網IP。
希望回答對你有幫助,如果有疑問,請繼續追問
答題不易,互相理解,您的採納是我前進的動力,感謝您。
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
$ip = $_SERVER[‘REMOTE_ADDR’];只是獲取客戶端所在的IP,但一個IP可以這個是沒辦法獲得的,這個涉及到路由策略,它不可能把內網IP提供給你,它總
php如何獲取局域網內網的IP
這個跟你的路由設置和訪問方式有關。
假設你的服務端在10.10.50.1,公網IP都是8.8.8.8。
假設你的客戶端在 10.10.50.100-199,出口公網IP是4.4.4.4
如果你的客戶端以公網的形式訪問,如,則服務端獲得IP都是4.4.4.4。
反之以內網的形式訪問,如,獲得的IP就是10.10.50.1XX。
解決的辦法,要麼就是使用內網地址訪問,要麼使用設置一下路由,指定10.10.50.100-199訪問的話,不走公網,走10網段。
php怎麼獲取服務器內網ip?
//服務器在局域網的話,那麼顯示的則是內網IP
$onlineip = $_SERVER[‘REMOTE_ADDR’];
echo $onlineip;
php怎麼獲取公網ip和內網ip
$ip=$_SERVER[“REMOTE_ADDR”];
SetCookie(“ip”,”$ip”);
$ip==isset($_COOKIE[‘ip’]);
我這個得到的是外網IP
$ip=$_SERVER[“REMOTE_ADDR”];
if(in_array(strtok($i, ‘.’), array(’10’, ‘127’, ‘168’, ‘192’)))
echo ‘內網’;
內網A類網段只開列了常見的部分,其餘的你自己增減
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/251987.html