在本地为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
时,我发现Should a MAMP return ::1 as IP on localhost?建议sudo
:
sudo vi /etc/apache2/httpd.conf
所以我转到MAMP/conf/apache/httpd.conf
并尝试将第48行从Listen 8888
修改为Listen 127.0.0.1
,我收到错误,Apache不会重启。如何修改我的MAMP IP,以便从$_SERVER['HTTP_USER_AGENT']
获得正确的IP?
答案 0 :(得分:1)
它是::1
,因为这是IPv6环回地址,相当于127.0.0.1
,远程地址是你自己,因为MAMP在本地运行,远程浏览器在同一台机器上。
REMOTE_ADDR
表示请求来自的IP。在大多数情况下,这与浏览器机器在开放互联网上的IP相同,但是MAMP在本地运行Apache,因此它是127.0.0.1
或::1
。如果您使用的是docker容器或虚拟机,则在配置容器/ VM时,它将是指定范围内的专用IP。
因此,要检索您期望的IP,您需要使用外部服务,或者,为了调试,将Akismet传递给硬编码的IP,但我怀疑它要求任何人评论的IP。