分页: 1 / 1

迁移后发现记录的 IP 地址不正确.

发表于 : 2016年10月6日 17:40
YamatoRyou
空间: Openshift, 地址: https://tiebasign-yamatoryou.rhcloud.com/bbs
操作系统: Linux
phpBB 版本: 3.1.9
PHP 版本: 5.3.14
MySQL 版本: 5.1.73

由于从别的空间迁移时保留了操作日志, 我最近发现迁移后用户注册; 发帖; 管理员登录; 控制面板等操作均显示为空间的本地 IP: 127.6.233.129. 如何使其显示正确的 IP?

截图地址: http://imgsrc.baidu.com/forum/pic/item/ ... 44ad07.jpg

Re: 迁移后发现记录的 IP 地址不正确.

发表于 : 2016年10月8日 13:09
davidyin
看上去,你的网站是在一个反向代理服务器后面,所以所取得的用户ip就是服务器的ip地址了。
这个要看服务器到底是如何处理真实ip地址的。
看看这段代码,并放到服务器上,看看其ip地址的情况。

代码: 全选

<?php
echo 'Server IP: ' . $_SERVER['SERVER_ADDR'] . '<br />';
echo 'Your IP: ' . $_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
   echo '<br />Forwarded For: ' . $_SERVER['HTTP_X_FORWARDED_FOR'];
}
?>
如果返回的前两个地址是一样的,就可以基本确定是在反向代理服务器后面。

Re: 迁移后发现记录的 IP 地址不正确.

发表于 : 2016年10月8日 15:26
YamatoRyou
davidyin 写了: 2016年10月8日 13:09 看上去,你的网站是在一个反向代理服务器后面,所以所取得的用户ip就是服务器的ip地址了。
这个要看服务器到底是如何处理真实ip地址的。
看看这段代码,并放到服务器上,看看其ip地址的情况。

代码: 全选

<?php
echo 'Server IP: ' . $_SERVER['SERVER_ADDR'] . '<br />';
echo 'Your IP: ' . $_SERVER['REMOTE_ADDR'];
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
   echo '<br />Forwarded For: ' . $_SERVER['HTTP_X_FORWARDED_FOR'];
}
?>
如果返回的前两个地址是一样的,就可以基本确定是在反向代理服务器后面。
返回如下:
Server IP: 127.6.233.129
Your IP: 127.6.233.129
Forwarded For: 1.181.*.* (为我的实际 IP)

看起来无解. 感谢解答.

Re: 迁移后发现记录的 IP 地址不正确.

发表于 : 2016年10月8日 15:41
davidyin
请尝试下面的方法。
修改 /includes/startup.php

找到

代码: 全选

if (!defined('IN_PHPBB'))
{
   exit;
}
之后添加如下代码:

代码: 全选

if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['SERVER_ADDR'] == $_SERVER['REMOTE_ADDR'])
{
     $_SERVER['REMOTE_ADDR'] = htmlspecialchars((string) $_SERVER['HTTP_X_FORWARDED_FOR']);
}
看看这样是否可以临时解决问题。

Re: 迁移后发现记录的 IP 地址不正确.

发表于 : 2016年10月8日 17:05
YamatoRyou
davidyin 写了: 2016年10月8日 15:41 请尝试下面的方法。
修改 /includes/startup.php

找到

代码: 全选

if (!defined('IN_PHPBB'))
{
   exit;
}
之后添加如下代码:

代码: 全选

if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['SERVER_ADDR'] == $_SERVER['REMOTE_ADDR'])
{
     $_SERVER['REMOTE_ADDR'] = htmlspecialchars((string) $_SERVER['HTTP_X_FORWARDED_FOR']);
}
看看这样是否可以临时解决问题。
由于我不会 PHP, 所以这样插入了代码:
截图地址 http://imgsrc.baidu.com/forum/pic/item/ ... 99f3a4.jpg

保存修改后进入控制台更改某个设置, IP 地址仍然不变.
http://imgsrc.baidu.com/forum/pic/item/ ... 2da63a.jpg

Re: 迁移后发现记录的 IP 地址不正确.

发表于 : 2016年10月8日 17:09
YamatoRyou
原来是我把代码写错了.
再次修改后重试发现已经变为我的 IP 地址.
非常感谢提供代码.

Re: 迁移后发现记录的 IP 地址不正确.

发表于 : 2016年10月8日 17:11
YamatoRyou
davidyin 写了: 2016年10月8日 15:41 请尝试下面的方法。
修改 /includes/startup.php

找到

代码: 全选

if (!defined('IN_PHPBB'))
{
   exit;
}
之后添加如下代码:

代码: 全选

if(!empty($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['SERVER_ADDR'] == $_SERVER['REMOTE_ADDR'])
{
     $_SERVER['REMOTE_ADDR'] = htmlspecialchars((string) $_SERVER['HTTP_X_FORWARDED_FOR']);
}
看看这样是否可以临时解决问题。
由于我不会 PHP, 所以这样插入了代码:
截图地址 http://imgsrc.baidu.com/forum/pic/item/ ... 99f3a4.jpg

保存修改后进入控制台更改某个设置, IP 地址仍然不变.
http://imgsrc.baidu.com/forum/pic/item/ ... 2da63a.jpg

---------------
原来是我把代码写错了.
再次修改后重试发现已经变为我的 IP 地址.
非常感谢提供代码.

Re: 迁移后发现记录的 IP 地址不正确.

发表于 : 2016年10月8日 17:44
davidyin
这只是一个临时措施。希望还是修改主机设置的地方,使其能正确返回用户IP。