PHP $_SERVER['REMOTE_ADDR']取得的竟然是服务器IP
$_SERVER['REMOTE_ADDR']取得的竟然是服务器IP,不是在本地测试的,客户端和服务器也不在同一局域网内,所以不是本地测试造成。可能是环境造成的,但不知道...
$_SERVER['REMOTE_ADDR']取得的竟然是服务器IP,不是在本地测试的,客户端和服务器也不在同一局域网内,所以不是本地测试造成。
可能是环境造成的,但不知道哪里能改。这个是不是php.ini哪里可以设置呢?
请高手指点,不要浪费了我的100分哦。
print_r($_SERVER);打印出来的内容中没有一项是客户端IP的。 展开
可能是环境造成的,但不知道哪里能改。这个是不是php.ini哪里可以设置呢?
请高手指点,不要浪费了我的100分哦。
print_r($_SERVER);打印出来的内容中没有一项是客户端IP的。 展开
4个回答
展开全部
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] : 'unknown';
}
{
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] : 'unknown';
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用这个试试 getenv("REMOTE_ADDR");看能否得到访问的ip
你再仔细看看自己运行的地址是否正确。
你再仔细看看自己运行的地址是否正确。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
unset($onlineip);
if($_SERVER['HTTP_CLIENT_IP']){
$onlineip=$_SERVER['HTTP_CLIENT_IP'];
}elseif($_SERVER['HTTP_X_FORWARDED_FOR']){
$onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$onlineip=$_SERVER['REMOTE_ADDR'];
}
echo $onlineip;
if($_SERVER['HTTP_CLIENT_IP']){
$onlineip=$_SERVER['HTTP_CLIENT_IP'];
}elseif($_SERVER['HTTP_X_FORWARDED_FOR']){
$onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$onlineip=$_SERVER['REMOTE_ADDR'];
}
echo $onlineip;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可能是服务器所在网关做了些网络设置,比如端口映射之类的,造成php不能识别客户端的ip
建议你在同一个局域网内测试一下,如果没问题,可能就是这个原因
建议你在同一个局域网内测试一下,如果没问题,可能就是这个原因
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询