2

在本地为 WordPress 开发插件我想在表单验证中实现 Akismet,但我需要一个 IP 地址来提交和运行时:

function check_ip_address() {
    if (isset($_SERVER['REMOTE_ADDR'])) :
        $ip_address = $_SERVER['REMOTE_ADDR'];
    else :
        $ip_address = "undefined";
    endif;
    return $ip_address;
}
echo check_ip_address();

我回来了::1。当我研究解决这个问题时,我没有找到可靠的答案:

在研究如何解决时,::1我发现MAMP 是否应该在本地主机上将 ::1 作为 IP 返回?这表明sudo

sudo vi /etc/apache2/httpd.conf

所以我去MAMP/conf/apache/httpd.conf尝试将第 48 行从Listen 8888to修改Listen 127.0.0.1,我得到一个错误,Apache 不会重新启动。如何修改我的 MAMP IP,以便从中获得正确的 IP $_SERVER['HTTP_USER_AGENT']

4

1 回答 1

1

这是::1因为这是 IPv6 环回地址,相当于127.0.0.1,并且远程地址是您自己,因为 MAMP 在本地运行,远程浏览器在同一台机器上。

REMOTE_ADDR表示请求来自的 IP。在大多数情况下,这与浏览器机器在开放互联网上的 IP 相同,但这里 MAMP 本地运行 Apache,所以它是127.0.0.1::1. 如果您使用的是 docker 容器或虚拟机,它将是配置容器/VM 时指定范围内的私有 IP。

因此,要检索您期望的 IP,您需要使用外部服务,或者,为了调试,将一个硬编码的 IP 传递给 Akismet,但我怀疑它询问的是评论者的 IP。

于 2017-09-01T17:14:24.407 回答