PHP如何获取用户的真实IP?

PHP如何获取用户的真实IP?,第1张

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和主机名、及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"

}

}

}


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/32900.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-20
下一篇2023-02-20

发表评论

登录后才能评论

评论列表(0条)

    保存