我已经实现了 AMP 电子邮件,所以当客户端通过电子邮件正文内部提交任何数据时amp-form
,请求会发送到谷歌,谷歌会通过 HTTP 请求将数据提交到我的服务器,但是当 AMP 请求从谷歌服务器而不是客户端的浏览器,我无法通过普通的 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;
}
编辑: 根据苏张对他的回答的评论,由于隐私问题,我们无法获得用户的 IP,因此我可以根据客户的地理位置获得附近 IP 的解决方案/解决方法也适用于我。