程序里用的ip地址获取函数”getenv(“REMOTE_ADDR”)“更换为”$_SERVER['REMOTE_ADDR']“,覆盖更新,再看数据库,ip地址已经成功记录,搞定。
既然再次遇到这问题,就还是记录下吧:php中获取访客(客户端)的ip地址函数getenv(“REMOTE_ADDR”) 与$_SERVER['REMOTE_ADDR']的区别,其实,通过这件事,已经很清楚了。getenv(“REMOTE_ADDR”)函数在 apache下能正常获取ip地址,而在iis中,一点作用都没,而$_SERVER['REMOTE_ADDR']函数,既可在apache中成功获取 访客的ip地址,在iis下也同样有效。
总结:
getenv("REMOTE_ADDR") //apache2 下使用正常
$_SERVER['REMOTE_ADDR'] //iis apache2 下使用都正常
function getRealIp()
{
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
for ($i = 0; $i < count($ips); $i++) {
if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
$ip = $ips[$i];
break;
}
}
}
return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
修改后的函数:
public function getRealIp()
{
$ip=false;
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
if($ip){
array_unshift($ips,$ip);
$ip = FALSE;
}
for ($i = 0; $i < count($ips); $i++)
{
//if (!eregi ("^(10│172.16│192.168).", $ips[$i]))
if (!preg_match ('/^(10│172.16│192.168)./i', $ips[$i]))
{
$ip = $ips[$i];
break;
}
}
}
return ($ip?$ip:$_SERVER['REMOTE_ADDR']);
}
失落的羊2024-11-14 22:06
今日申请十年之约博客成员!
失落的羊2024-11-02 21:34
启用新的访问统计.
失落的羊2024-10-28 23:31
重新整理长篇连载栏目
失落的羊2024-10-19 10:35
构思公众号文章迁移计划
失落的羊2024-10-16 23:16
开始研究公众号后台自动回复