PHP作为JavaScript:获取用户IP

时间:2013-10-22 13:16:13

标签: javascript php ip tracking

我使用这个简单的脚本:

<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警报中)提供SERVER的IP而不是CLIENT。

1 个答案:

答案 0 :(得分:3)

$ _ 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。