网上这个问题的答案很多,合理的确不是很多。我把问题详细说明一下,请高手帮我解决,先谢了。纯真的IP库的那个TXT文件我已下载,文件已经导入到ACCESS库里,问题从这里开始,2头的IP段用不用像这样(Startip: 1*256*256*256+1*256*256+0*256+0 = 16842752 (这个数字才是最终要放到数据库里),是不是又要重新建张表存这样的数据;即使查到该用户IP的城市,要和我系统中的城市如何匹配,比如武汉,系统中的网址为www.wuhan.php,难道要把类似的网址手动一个个的插到该表中吗;如果把城市取出来用循环在系统中进行对比,城市多了会不会影响服务器的速度,请教指点。最好有PHP代码演示,可发电子邮件给我benben8051@163.com或加我QQ188427785
再问下,如果用户用代理服务器,应该如何获得用户的IP
第1个回答 2008-06-14
既然你的公司已经做到全国各地了,还稀罕服务器,做个分流就可以了。
第2个回答 2008-06-15
先构造一个获取客户端真实IP的函数:
function rm_ip(){
$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']);
}
获取到客户的IP后,与纯真IP数据进行匹配,最接近的城市则跳转到相关的页面。
function rm_ip(){
$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']);
}
获取到客户的IP后,与纯真IP数据进行匹配,最接近的城市则跳转到相关的页面。