天天看点

php读取ipv4,PHP如何只获得ipv4的地址

PHP如何只获得ipv4的地址

php读取ipv4,PHP如何只获得ipv4的地址

PHPzhong2017-04-10 17:00:22 0 1 149

希望根据不同的ip地址段,网站显示不同的内容。目前针对ipv4的地址段做了限制,但是有些客户端访问是通过ipv6的地址访问,做的限制就没有用了。所以我想问一下,有没有可能通过php只获取ipv4的代码。

目前使用的php获取ip的代码如下:

function check_ip($str)

{

return preg_match('/""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/',$str)>0;

}

function getIP($isHeader=false)

{

if($isHeader)

{

if (isset($_SERVER['HTTP_CLIENT_IP']) && check_ip($_SERVER['HTTP_CLIENT_IP']))

{

return $_SERVER['HTTP_CLIENT_IP'];

}

else if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && check_ip($_SERVER['HTTP_X_FORWARDED_FOR']))

{

return $_SERVER['HTTP_X_FORWARDED_FOR'];

}

}

if (isset($_SERVER['REMOTE_ADDR']) && check_ip($_SERVER['REMOTE_ADDR']))

{

return $_SERVER['REMOTE_ADDR'];

}

else

{

return 'unknown';

}

}

php读取ipv4,PHP如何只获得ipv4的地址

回答

1

分享

全部回复 (1)

php读取ipv4,PHP如何只获得ipv4的地址

大家讲道理2017-04-10 17:02:221楼

你看一下这个能不能解决你的问题吧,就是可以根据用户环境获取IP地址

function getIP()

{

if (@$_SERVER["HTTP_X_FORWARDED_FOR"])

$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];

else if (@$_SERVER["HTTP_CLIENT_IP"])

$ip = $_SERVER["HTTP_CLIENT_IP"];

else if (@$_SERVER["REMOTE_ADDR"])

$ip = $_SERVER["REMOTE_ADDR"];

else if (@getenv("HTTP_X_FORWARDED_FOR"))

$ip = getenv("HTTP_X_FORWARDED_FOR");

else if (@getenv("HTTP_CLIENT_IP"))

$ip = getenv("HTTP_CLIENT_IP");

else if (@getenv("REMOTE_ADDR"))

$ip = getenv("REMOTE_ADDR");

else

$ip = "Unknown";

return $ip;

}

?>

参考 非常实用的PHP常用函数汇总的第10点,有兴趣的话你可以看一下

php读取ipv4,PHP如何只获得ipv4的地址

回复