PHP 作为 JavaScript:获取用户 IP


PHP as JavaScript: get users IP

我使用这个简单的脚本:

<script type="text/javascript">
var _mytrack = _mytrack || [];
_mytrack.push(['_setType', 'SOMETYPE']);
_mytrack.push(['_setEmail', 'john@johndoe.com']);
(function() {
var mytrack = document.createElement('script');
_mytrack.type = 'text/javascript';
_mytrack.async = true;
mytrack.src = ('https:' == document.location.protocol ? 'https://www' : 'http://www') + '.mytrack.net/tracker.tell.php?i='+_mytrack;
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(mytrack, s);
})();
</script>

我的PHP脚本(tracker.tell.php)看起来像这样:

header("content-type: application/javascript");
echo "alert('".$_SERVER['REMOTE_ADDR']."');";

现在这个问题与$_SERVER['REMOTE_ADDR']有关,因为这给出了(在JS警报中)服务器的IP,而不是客户端的IP。

$_SERVER['REMOTE_ADDR'] 确实为您提供了远程用户的 IP 地址。但是,如果您使用的是代理或负载均衡器,则应使用 $_SERVER['HTTP_X_FORWARDED_FOR']

如果用户可以直接或通过代理访问您的服务器,则只需使用 if 语句

$remote_ip = (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']);

然后将变量传递给 JS。