phpip介面
A. php獲取IP地址及埠號
$_SERVER['REMOTE_PORT']
B. php上傳至伺服器獲取ip顯示127.0.0.1
有些php伺服器上無法使用網上所謂的5中獲取ip地址的方法,那些代碼使用後通常顯示為127.0.0.1,現在下面的方法可以解決這個問題。
獲取ip代碼 ?php if($HTTP_X_FORWARDED_FOR!="") $REMOTE_ADDR=$HTTP_X_FORWARDED_FOR; $tmp_ip=explode(",",$REMOTE_ADDR); $REMOTE_ADDR=$tmp_ip[0]; function getRealIp(){ $ip=false; if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']); if ($ip) { array_unshift($ips, $ip); $ip = FALSE; } for ($i = 0; $i count($ips); $i++) { if (!eregi ("^(10│172.16│192.168).", $ips[$i])) { $ip = $ips[$i]; break; } } } return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); } $real_ip=getRealIp(); echo "IP為:".$real_ip; ? 效果圖如下
C. 利用php怎麼獲取用戶ip
php獲取用戶真實ip的方法:
方法1:
//獲取REMOTE_ADDR屬性,直接可以得到ip
$ip = $_SERVER["REMOTE_ADDR"];
echo $ip;
方法2:
//從Server中獲取HTTP_VIA,如果獲取到就用HTTP_X_FORWARDED_FOR的值替換,如果獲取不到就取REMOTE_ADDR的值。
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] :
$_SERVER["REMOTE_ADDR"];
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
echo $user_IP;
方法3:
function getRealIp()
{
$ip=false; //初始化ip為false
if(!empty($_SERVER["HTTP_CLIENT_IP"])){ //如果HTTP_CLIENT_IP不為空
$ip = $_SERVER["HTTP_CLIENT_IP"]; //獲取HTTP_CLIENT_IP的值
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { //如果HTTP_X_FORWARDED_FOR不為空
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
//把HTTP_X_FORWARDED_FOR的值用,分割後存放數組ips
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }//遍歷處理
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
$ip = $ips[$i]; //獲得真實ip
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
echo getRealIp();
D. 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)
這個函數功能也很強大。
E. PHP怎麼獲取當前電腦的IP
本文所述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";
}
}
}
F. php怎麼記錄訪問者ip並生成日誌
php獲取訪問者IP地址匯總
在很我的時候我們需要得到用戶的真實IP地址,例如,日誌記錄,地理定位,將用戶信息,網站數據分析等,其實獲取IP地址很簡單$_SERVER[\'REMOTE_ADDR\']就可以了。下面我們就來給大家匯總一下常用的幾種獲取IP地址的方法。
//方法1:
$ip = $_SERVER["REMOTE_ADDR"];
echo $ip;
//方法2:
代碼如下:
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
echo $user_IP;
//方法3:
function getRealIp()
{
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
echo getRealIp();
//方法4:
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
$ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
$ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif (getenv("HTTP_X_FORWARDED_FOR"))
{
$ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP"))
{
$ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("REMOTE_ADDR"))
{
$ip = getenv("REMOTE_ADDR");
}
else
{
$ip = "Unknown";
}
echo $ip ;
//方法5:
if(getenv('HTTP_CLIENT_IP')) {
$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
$onlineip = getenv('REMOTE_ADDR');
} else {
$onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
echo $onlineip;
//方法6:
print "您的IP地址是:";
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$cip = $_SERVER["HTTP_CLIENT_IP"];
}
elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
$cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
elseif(!empty($_SERVER["REMOTE_ADDR"])){
$cip = $_SERVER["REMOTE_ADDR"];
}
else{
$cip = "無法獲取!";
}
print $cip;
保存TEXT中
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$time = gmdate("H:i:s",time()+8*3600);
$file = "123.txt" ;
$fp=fopen ("123.txt","a") ;
$txt= "$ip"."----"."$time"."\n";
fputs($fp,$txt);
?>