apache 如何在PHP中获取客户端的IP地址,以通过AMP电子邮件进行请求

agyaoht7  于 2022-11-16  发布在  Apache
关注(0)|答案(2)|浏览(166)

我已经实现了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 Zhanghis answer的评论,由于隐私问题,我们无法获得用户的IP,因此,我可以根据客户端的地理位置获得附近IP的解决方案/变通方案也适用于我。

3htmauhk

3htmauhk1#

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

ftf50wuq

ftf50wuq2#

最简单的方法是为空函数提取一个JSON文件,并将其附加到用户。
即使用户没有提交任何内容,如果用户在AMP电子邮件中“激活”了触发此拉取的内容,您也将获得IP。

相关问题