function getIp()
{
$IPaddress=''
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$IPaddress = $_SERVER["HTTP_X_FORWARDED_FOR"]
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$IPaddress = $_SERVER["HTTP_CLIENT_IP"]
} else {
$IPaddress = $_SERVER["REMOTE_ADDR"]
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")){
$IPaddress = getenv("HTTP_X_FORWARDED_FOR")
} else if (getenv("HTTP_CLIENT_IP")) {
$IPaddress = getenv("HTTP_CLIENT_IP")
} else {
$IPaddress = getenv("REMOTE_ADDR")
}
}
return $IPaddress
}
echo getIp()//就可以输出用户的IP地址。
?>
获取服务器端ip地址
<?phpfunction serverIp(){
if(isset($_SERVER)){
if($_SERVER['SERVER_ADDR']){
$server_ip=$_SERVER['SERVER_ADDR']
}else{
$server_ip=$_SERVER['LOCAL_ADDR']
}
}else{
$server_ip = getenv('SERVER_ADDR')
}
return $server_ip
}
echo serverIp()
?>
此方法在本地不可用。需要上传至服务器
如果在本地使用此方法 打印出来的是127.0.0.1
希望对你有帮助
ip地址分 IPv4和IPV6两个版本。
127.0.0.1或者192.168.0.1之类的,属于IPV4的格式
127.0.0.1转换为IPv6就是 ::1
IPv6具体的格式写法,你搜索一下了解一下。
另外 ,服务端获取ip地址,是相对的。比如你在局域网内建一个服务器,在程序里获取的ip地址,就是客户端在局域网的ip ,一般是类似 192.168.0.101 之类的,大公司的话可能 10.x.x.x
局域网的ip地址,可以直接在网络适配器上看到
而在inter网,也就是大网络上,服务端获取的ip地址,是你的连网设备获取到的公网ip ,一般一个局域网内的主机,相对于因特网上的服务器,显示的都是公网地址。
公网ip没有在本机电脑上直接显示。会显示在路由或者连网设备上。也可以通过百度搜索 ip地址,会显示你的公网ip
所以,假设一个局域网内,有两台电脑同时访问一个网上的服务器,服务器是没办法给两台电脑区分开ip地址的,显示的是一样的。只是可能得到的设备信息不一样(如:浏览器的useragent)
function real_server_ip(){static $serverip = NULL
if ($serverip !== NULL){
return $serverip
}
if (isset($_SERVER)){
if (isset($_SERVER['SERVER_ADDR'])){
$serverip = $_SERVER['SERVER_ADDR']
}
else{
$serverip = '0.0.0.0'
}
}
else{
$serverip = getenv('SERVER_ADDR')
}
return $serverip
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)