如何解决如何为通过 AMP 电子邮件发出的请求在 PHP 中获取客户端的 IP 地址
我已经实施了 AMP 电子邮件,因此当客户端通过电子邮件正文内部的 amp-form
提交任何数据时,请求会发送到谷歌,谷歌通过 HTTP 请求将数据提交到我的服务器,但随着 AMP 请求的到来从 Google 服务器而不是客户端的浏览器到我的服务器,我无法通过普通的 PHP $_SERVER
变量获取客户端的 IP。
AMP EMAILS 是否有任何解决方法,我可以通过它在我的 PHP Apache 后端获取客户端的 IP?
以下是我目前用来获取 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 的解决方案/解决方法也将为我工作。
解决方法
AMP 电子邮件提供商不会透露用户的 IP 地址,否则会泄露隐私。您无法通过表单提交获取用户的 IP 地址。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。