我希望在用户阅读邮件时跟踪用户的位置。我添加了1x1px图像用于跟踪,它将调用我的位置脚本并将用户位置存储在数据库中。
位置脚本是(locations.php)
$location_details = json_decode(file_get_contents("http://ipinfo.io/".$_SERVER['REMOTE_ADDR']."/json"));
$locationtext = "Location : ".$location_details->city." ".$location_details->region." ".$location_details->country;
将在脚本上方调用的1x1px邮件跟踪图像
http://mysiteurl.com/location.php
问题是当我直接调用脚本时它会给我一个变量$_SERVER['REMOTE_ADDR']
的用户的真实IP地址。但是当脚本调用当时的邮件时,它会给出不同的IP地址,即Gmail的SMTP或谷歌的代理IP。
我的$ _SERVER详细信息是:
{
"PATH":"/usr/local/bin:/usr/bin:/bin",
"UNIQUE_ID":"Vl7beLia4QsAAHUl504AAAAF",
"PHPHANDLER":"/usr/local/php53/bin/php",
"HTTP_HOST":"saisoft.us",
"HTTP_X_REAL_IP":"66.249.93.219",
"HTTP_ACCEPT_ENCODING":"gzip,deflate",
"HTTP_CONNECTION":"close",
"HTTP_USER_AGENT":"Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)",
"SERVER_SOFTWARE":"Apache",
"SERVER_NAME":"saisoft.us",
"SERVER_ADDR":"181.224.138.204",
"SERVER_PORT":"80",
"REMOTE_ADDR":"66.249.93.219",
"DOCUMENT_ROOT":"/home/saisoft9/public_html",
"SERVER_ADMIN":"webmaster@saisoft.us",
"SCRIPT_FILENAME":"/home/saisoft9/public_html/sugar/ss_custom/tracker_image.php",
"REMOTE_PORT":"44678",
"GATEWAY_INTERFACE":"CGI/1.1",
"SERVER_PROTOCOL":"HTTP/1.0",
"REQUEST_METHOD":"GET",
"QUERY_STRING":"v_tracker_id=971295152638514267278685911477886786",
"REQUEST_URI":"/sugar/ss_custom/tracker_image.php?v_tracker_id=971295152638514267278685911477886786",
"SCRIPT_NAME":"/sugar/ss_custom/tracker_image.php",
"PHP_SELF":"/sugar/ss_custom/tracker_image.php",
"REQUEST_TIME":1449057144
}
答案 0 :(得分:1)
当您的用户打开电子邮件时,Gmail会使用Google的安全代理服务器来提供可能包含在这些邮件中的图片。
Gmail正在使用某些代理之类的内容,例如https://ci3.googleusercontent.com/proxy/SECURITY-TOKEN#http://mysiteurl.com/pixel
。实际上,对您的服务器的呼叫来自Gmail服务器,而不是直接来自用户的浏览器。
要解决此问题,您可以分享print_r($_SERVER);
的结果吗?我认为当代理在那里时$_SERVER['HTTP_CLIENT_IP']
。
由于谷歌代理存在更多问题。请同时查看此答案images inside gmail email not being displayed