【发布时间】:2017-12-12 23:18:55
【问题描述】:
我正在处理一个问题......
当我想将客户的 ip 地址与表单一起发送时,表单发送的 ip 地址是这样的: "2a02:a456:4012:X:dcXX:56f5:XXX:555a" 而且它也在不断变化......
而不是我可以用来作为禁止人的实际 IP 地址,例如:“85.333.222.111”。
我使用这个代码:
function get_client_ip_server() {
$ipaddress = '';
if ($_SERVER['HTTP_CLIENT_IP'])
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if($_SERVER['HTTP_X_FORWARDED_FOR'])
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if($_SERVER['HTTP_X_FORWARDED'])
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if($_SERVER['HTTP_FORWARDED_FOR'])
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if($_SERVER['HTTP_FORWARDED'])
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if($_SERVER['REMOTE_ADDR'])
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'ONBEKEND';
return $ipaddress;
}
我使用这个代码:
function get_client_ip_env() {
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'ONBEKEND';
return $ipaddress;
}
都返回这些 IP 地址: "2a02:a456:4012:X:dcXX:56f5:XXX:555a
另外,非常重要的是:当我拒绝除我的 IP4 地址之外的所有地址时,我的 .htaccess 将不允许我访问。当我允许我的 IP6 地址时,它允许我,但该地址会不时更改。
有人可以指出我正确的方向并告诉我我在这里做错了什么吗?非常感谢您的帮助。
问候, 朱利安。
【问题讨论】:
标签: php ip environment-variables