微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为通过 AMP 电子邮件发出的请求在 PHP 中获取客户端的 IP 地址

如何解决如何为通过 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 Zhanghis answer评论,由于隐私问题,我们无法获取用户的 IP,因此我可以根据客户端的地理位置获取附近 IP 的解决方案/解决方法也将为我工作。

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。