我注意到当使用Apache(htaccess)隐藏.php扩展实际上是在改变$ _SERVER ['REMOTE_ADDR']的返回值;从返回访问者IP到返回域或服务器IP。
RewriteBase /
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
这就是我用于htaccess文件的内容 没什么
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
在我的php文件中 无论如何可以修复$ _SERVER ['REMOTE_ADDR']返回的访客ip?
答案 0 :(得分:1)
首先回应deceze的评论 - 这很奇怪,我不认为这是由Apache / htaccess规则引起的。还有更多事情要发生吗?
尝试使用:
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARTDED_FOR'] != '') {
$ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip_address = $_SERVER['REMOTE_ADDR'];
}
echo $ip_address;
这至少能提供更准确的IP吗?
答案 1 :(得分:0)
foreach($_SERVER as $key => $value){
echo $key.'_____'.$value."<br/>";
}
我找到了这个$ _SERVER ['HTTP_X_REAL_IP']; 它工作得很好。我希望这有助于其他人。