我已经实现了AMP电子邮件,所以当客户端通过amp-form
从电子邮件正文中提交任何数据时,请求会发送到google,google会通过HTTP请求将数据提交到我的服务器,但由于AMP请求是从Google服务器而不是客户端的浏览器发送到我的服务器的,因此我无法通过正常的PHP $_SERVER
变量获取客户端的IP。
是否有任何解决方案的AMP电子邮件,通过它我可以客户端的IP在我的PHP Apache后端?
下面是我目前用来获取IP的代码,但无法在任何$_SERVER
项中获取客户端IP:
function get_ip_address()
{
$str="";
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key){
if (array_key_exists($key, $_SERVER) === true)
{
foreach (explode(',', $_SERVER[$key]) as $ip)
{
$ip = trim($ip); // just to be safe
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false)
{
$str .= $key." => ".$ip." ";;
}
}
}
}
return $str;
}
**编辑:**根据Su Zhang对his answer的评论,由于隐私问题,我们无法获得用户的IP,因此,我可以根据客户端的地理位置获得附近IP的解决方案/变通方案也适用于我。
2条答案
按热度按时间3htmauhk1#
AMP电子邮件提供商不会透露用户的IP地址,否则会造成隐私泄露。您无法通过提交表单获得用户的IP地址。
ftf50wuq2#
最简单的方法是为空函数提取一个JSON文件,并将其附加到用户。
即使用户没有提交任何内容,如果用户在AMP电子邮件中“激活”了触发此拉取的内容,您也将获得IP。