本文目錄一覽:
- 1、如何使用php獲取本機IP地址
- 2、PHP怎麼獲取當前電腦的IP?
- 3、利用php怎麼獲取用戶ip
- 4、如何用 PHP 來獲取客戶端 IP 和 伺服器的 IP
- 5、php中有沒有直接獲取本機IP地址的函數
如何使用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?
本文所述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”;
}
}
}
利用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();
如何用 PHP 來獲取客戶端 IP 和 伺服器的 IP
來看看代碼:
echo “(1)瀏覽當前頁面的用戶的 IP 地址為:”;
echo $_SERVER[‘REMOTE_ADDR’];
echo “
“;
echo “(2)瀏覽當前頁面的用戶的 IP 地址為:”;
echo getenv(‘REMOTE_ADDR’);
echo “
“;
echo “主機 的 IP 地址為:”;
echo gethostbyname();
2
它的輸出結果為:
(1)瀏覽當前頁面的用戶的 IP 地址為:127.0.0.1
(2)瀏覽當前頁面的用戶的 IP 地址為:127.0.0.1
主機 的 IP 地址為:61.135.169.105
3
關於獲取客戶端的 IP 地址,有倆方法:
第一個是使用:
$_SERVER[‘REMOTE_ADDR’]
它正在瀏覽當前頁面用戶的 IP 地址,這裡的輸出結果為 127.0.0.1,因為這是在本地測試,輸出的是我本地的環路地址。
第倆個是使用:
getenv(‘REMOTE_ADDR’)
這裡使用了函數 getenv : Gets the value of an environment variable(得到各種環境變數的值),返回值:Returns the value of the environment variable varname, or FALSE on an error(失敗的話返回 FALSE).
php中有沒有直接獲取本機IP地址的函數
function _get_client_ip() {
$ip = $_SERVER[‘REMOTE_ADDR’];
if (isset($_SERVER[‘HTTP_CLIENT_IP’]) preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’, $_SERVER[‘HTTP_CLIENT_IP’])) {
$ip = $_SERVER[‘HTTP_CLIENT_IP’];
} elseif(isset($_SERVER[‘HTTP_X_FORWARDED_FOR’]) AND preg_match_all(‘#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s’, $_SERVER[‘HTTP_X_FORWARDED_FOR’], $matches)) {
foreach ($matches[0] AS $xip) {
if (!preg_match(‘#^(10|172\.16|192\.168)\.#’, $xip)) {
$ip = $xip;
break;
}
}
}
return $ip;
}
這是dz的,拿去,不謝!
原創文章,作者:FEKFF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/330171.html