我使用这个简单的脚本:
<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。
答案 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。