PHP $_SERVER['REMOTE_ADDR']取得的竟然是服务器IP

$_SERVER['REMOTE_ADDR']取得的竟然是服务器IP,不是在本地测试的,客户端和服务器也不在同一局域网内,所以不是本地测试造成。可能是环境造成的,但不知道... $_SERVER['REMOTE_ADDR']取得的竟然是服务器IP,不是在本地测试的,客户端和服务器也不在同一局域网内,所以不是本地测试造成。
可能是环境造成的,但不知道哪里能改。这个是不是php.ini哪里可以设置呢?
请高手指点,不要浪费了我的100分哦。
print_r($_SERVER);打印出来的内容中没有一项是客户端IP的。
展开
 我来答
hailuo722
2009-07-17 · 超过29用户采纳过TA的回答
知道答主
回答量:183
采纳率:0%
帮助的人:77万
展开全部
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';
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xwen1983
2009-07-20 · TA获得超过210个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:123万
展开全部
用这个试试 getenv("REMOTE_ADDR");看能否得到访问的ip
你再仔细看看自己运行的地址是否正确。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龚琬P9
2009-07-20
知道答主
回答量:54
采纳率:0%
帮助的人:0
展开全部
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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pk0909
推荐于2018-03-21 · TA获得超过243个赞
知道小有建树答主
回答量:275
采纳率:0%
帮助的人:0
展开全部
可能是服务器所在网关做了些网络设置,比如端口映射之类的,造成php不能识别客户端的ip

建议你在同一个局域网内测试一下,如果没问题,可能就是这个原因
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式