本文目錄一覽:
php獲取本機真實IP地址實例代碼
本文實例為大家分享了php獲取本機真實IP地址實例代碼,供大家參考。
主要是獲取操作系統為win2000/xp、win7的本機IP真實地址,和獲取操作系統為linux類型的本機IP真實地址,具體內容如下
function
getLocalIP()
{
$preg
=
“/\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\Z/”;
//獲取操作系統為win2000/xp、win7的本機IP真實地址
exec(“ipconfig”,
$out,
$stats);
if
(!empty($out))
{
foreach
($out
AS
$row)
{
if
(strstr($row,
“IP”)
strstr($row,
“:”)
!strstr($row,
“IPv6”))
{
$tmpIp
=
explode(“:”,
$row);
if
(preg_match($preg,
trim($tmpIp[1])))
{
return
trim($tmpIp[1]);
}
}
}
}
//獲取操作系統為linux類型的本機IP真實地址
exec(“ifconfig”,
$out,
$stats);
if
(!empty($out))
{
if
(isset($out[1])
strstr($out[1],
‘addr:’))
{
$tmpArray
=
explode(“:”,
$out[1]);
$tmpIp
=
explode(“
“,
$tmpArray[1]);
if
(preg_match($preg,
trim($tmpIp[0])))
{
return
trim($tmpIp[0]);
}
}
}
return
‘127.0.0.1’;
}
以上就是本文的全部內容,希望對大家的學習有所幫助。
如何使用php獲取本機IP地址
function ip() {
if(getenv(‘HTTP_CLIENT_IP’) strcasecmp(getenv(‘HTTP_CLIENT_IP’), ‘unknown’)) {
$ip = getenv(‘HTTP_CLIENT_IP’);
} elseif(getenv(‘HTTP_X_FORWARDED_FOR’) strcasecmp(getenv(‘HTTP_X_FORWARDED_FOR’), ‘unknown’)) {
$ip = getenv(‘HTTP_X_FORWARDED_FOR’);
} elseif(getenv(‘REMOTE_ADDR’) strcasecmp(getenv(‘REMOTE_ADDR’), ‘unknown’)) {
$ip = getenv(‘REMOTE_ADDR’);
} elseif(isset($_SERVER[‘REMOTE_ADDR’]) $_SERVER[‘REMOTE_ADDR’] strcasecmp($_SERVER[‘REMOTE_ADDR’], ‘unknown’)) {
$ip = $_SERVER[‘REMOTE_ADDR’];
}
return preg_match ( ‘/[\d\.]{7,15}/’, $ip, $matches ) ? $matches [0] : ”;
}
以上函數取自phpcms的獲取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
$user_IP = $_SERVER[“REMOTE_ADDR”];//獲取訪問者IP
$file_name=date(‘Y-m-d’).’.txt’//以當前的日期建立txt文件
$file=fopen($file_name,”a+”);//如果存在該文件就打開,如果不存在就創建
fwrite($file,$user_IP.’–‘.date(‘Y-m-d H:i:s’));//將訪問者IP及當前時刻寫到文件最後
fclose($file);//關閉文件
//個人覺得txt文件不會很大所以一般無需一天一刪除,因為在txt里刪除一些行比起數據庫要麻煩一些。
原創文章,作者:E8H04,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/130374.html