0

我已经实现了 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 的解决方案/解决方法也适用于我。

4

1 回答 1

2

AMP 电子邮件提供商不会透露用户的 IP 地址,否则会导致隐私泄露。您无法通过表单提交获取用户的 IP 地址。

于 2021-03-23T13:45:17.097 回答