PHP获取IP地址及根据IP判断城市实现城市切换或跳转
- 格式:docx
- 大小:12.73 KB
- 文档页数:15
利⽤PHP获取访客IP、地区位置、浏览器及来源页⾯等信息前⾔本⽂中主要介绍了关于利⽤PHP获取访客IP、地区位置、浏览器及来源页⾯等信息的相关内容,分享出来供⼤家参考学习,下⾯来⼀起看看详细的介绍:不多说了,每个⽅法都注释了,可以直接⽤:⽰例代码<?php//这个类似⽤来获取访客信息的//⽅便统计class visitorInfo{//获取访客ippublic function getIp(){$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获取城市、⽹络运营商等信息public function findCityByIp($ip){$data = file_get_contents('/service/getIpInfo.php?ip='.$ip);return json_decode($data,$assoc=true);}//获取⽤户浏览器类型public function getBrowser(){$agent=$_SERVER["HTTP_USER_AGENT"];if(strpos($agent,'MSIE')!==false || strpos($agent,'rv:11.0')) //ie11判断return "ie";else if(strpos($agent,'Firefox')!==false)return "firefox";else if(strpos($agent,'Chrome')!==false)return "chrome";else if(strpos($agent,'Opera')!==false)return 'opera';else if((strpos($agent,'Chrome')==false)&&strpos($agent,'Safari')!==false)return 'safari';elsereturn 'unknown';}//获取⽹站来源public function getFromPage(){return $_SERVER['HTTP_REFERER'];}}总结以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
php 服务器端获取客户请求ip的原理下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
本文下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Downloaded tips: This document is carefully compiled by the editor. I hope that after you download them, they can help you solve practical problems. The documents can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!PHP 服务器端获取客户请求 IP 的原理。
获取当前IP地址,跳转到对应城市⽹站。
博客迁移:1. [代码]index.php<?phpinclude './pinyin.php';//获取当前ipfunction getIp(){$onlineip='';if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')){$onlineip=getenv('HTTP_CLIENT_IP');} elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')){ $onlineip=getenv('HTTP_X_FORWARDED_FOR');} elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown')){$onlineip=getenv('REMOTE_ADDR');} elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){ $onlineip=$_SERVER['REMOTE_ADDR'];}return$onlineip;}//获取城市信息apifunction getLocation($ip){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, "/iplookup/iplookup.php?format=json&ip=".$ip);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);$str = curl_exec($curl);curl_close($curl);return$str;}//当前ip地址$currentIP = getIp();//通过当前ip获取信息$getLocation = getLocation($currentIP);$currentInfo = json_decode($getLocation, true);//判断ip是否为有效if($currentInfo['ret'] == '-1'){$currentInfo['city'] = 'unknown';}//当前城市中⽂名$currentCityName = $currentInfo['city'];$currentCityEName = $pin->Pinyin("$currentCityName",'UTF8');//城市拼⾳多⾳字switch($currentCityEName){case 'zhongqing':$currentCityEName = 'chongqing';break;case 'shenfang':$currentCityEName = 'shifang';break;case 'chengdou':$currentCityEName = 'chengdu';break;case 'yueshan':$currentCityEName = 'leshan';break;case 'junxian':$currentCityEName = 'xunxian';break;case 'shamen':$currentCityEName = 'xiamen';break;case 'zhangsha':$currentCityEName = 'changsha';case 'weili':$currentCityEName = 'yuli';break;case 'zhaoyang':$currentCityEName = 'chaoyang';break;case 'danxian':$currentCityEName = 'shanxian';break;default:$currentCityEName = $pin->Pinyin("$currentCityName",'UTF8');break;}//重定向浏览器header("Location: /?city=$currentCityEName");exit;2. [代码]pinyin.php<?php// 这⾥在OSC上找了别⼈分享的中⽂转换成拼⾳的⼀段代码。
php利⽤百度地图API进⾏IP定位和GPS定位最近在做⼀个⼿机端的webapp地图应⽤,⽽核⼼内容当然是定位了,但是定位的话有⼏种⽅式,IP定位,GPS定位,基站定位(这个貌似webapp⽤不了),那么剩下核⼼的gps定位和ip定位了,我们知道,html5有定位API,但是该API拿到的GPS数据是硬件坐标,⽆法直接显⽰在地图上。
后来上百度LBS云看到有地图IP定位API和GPS坐标转换API,地址:百度地图API的调⽤需要申请KEY,这⾥就不具体介绍了,直接贴上本⼈写了两个关键⽅法,为了⽅便前台调⽤,返回数据采⽤以下格式{address: "北京市海淀区西⼆旗北路",province: "北京市",city: "北京市",street: "西⼆旗北路",street_number: "",city_code: 131,lng: 116.3207676804,lat: 40.064084055578}核⼼类<?php/*** @author xialei <xialeistudio@>*/class map{private static $_instance;const REQ_GET = 1;const REQ_POST = 2;/*** 单例模式* @return map*/public static function instance(){if (!self::$_instance instanceof self){self::$_instance = new self;}return self::$_instance;}/*** 执⾏CURL请求* @author: xialei<xialeistudio@>* @param $url* @param array $params* @param bool $encode* @param int $method* @return mixed*/private function async($url, $params = array(), $encode = true, $method = self::REQ_GET){$ch = curl_init();if ($method == self::REQ_GET){$url = $url . '?' . http_build_query($params);$url = $encode ? $url : urldecode($url);curl_setopt($ch, CURLOPT_URL, $url);}else{curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, $params);}curl_setopt($ch, CURLOPT_REFERER, '百度地图referer');curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$resp = curl_exec($ch);curl_close($ch);return $resp;}/*** ip定位* @param string $ip* @return array* @throws Exception*/public function locationByIP($ip){//检查是否合法IPif (!filter_var($ip, FILTER_VALIDATE_IP)){throw new Exception('ip地址不合法');}$params = array('ak' => '百度地图API KEY','ip' => $ip,'coor' => 'bd09ll'//百度地图GPS坐标);$api = '/location/ip';$resp = $this->async($api, $params);$data = json_decode($resp, true);//有错误if ($data['status'] != 0){throw new Exception($data['message']);}//返回地址信息return array('address' => $data['content']['address'],'province' => $data['content']['address_detail']['province'],'city' => $data['content']['address_detail']['city'],'district' => $data['content']['address_detail']['district'],'street' => $data['content']['address_detail']['street'],'street_number' => $data['content']['address_detail']['street_number'],'city_code' => $data['content']['address_detail']['city_code'],'lng' => $data['content']['point']['x'],'lat' => $data['content']['point']['y']);}/*** GPS定位* @param $lng* @param $lat* @return array* @throws Exception*/public function locationByGPS($lng, $lat){$params = array('coordtype' => 'wgs84ll','location' => $lat . ',' . $lng,'ak' => '百度地图API KEY','output' => 'json','pois' => 0);$resp = $this->async('/geocoder/v2/', $params, false); $data = json_decode($resp, true);if ($data['status'] != 0){throw new Exception($data['message']);}return array('address' => $data['result']['formatted_address'],'province' => $data['result']['addressComponent']['province'],'city' => $data['result']['addressComponent']['city'],'street' => $data['result']['addressComponent']['street'],'street_number' => $data['result']['addressComponent']['street_number'],'city_code'=>$data['result']['cityCode'],'lng'=>$data['result']['location']['lng'],'lat'=>$data['result']['location']['lat']);}}。
PHP通过IP获取地理位置(实例)发布:JB02 来源:脚本学堂【大中小】分享一例php代码,实现通过IP地址获取访问者的地理位置,在php编程中经常用到,有需要的朋友参考下吧。
本节内容:PHP通过IP获取地理位置例子:附,新浪、有道、腾讯的Ip地址查询接口。
1,新浪 IP 地址查询接口:/ip?ip=139.256.0.9 接口形式:http;返回内容:javascript 片段;查询地址:可以指定 IP 地址;2,有道 IP 地址查询接口:/smartresult-xml/search.s?type=ip&q=116.230.0.9接口形式:http;返回内容:xml 片段;查询地址:可以指定 IP 地址;3,腾讯 IP 地址查询接口:/ipaddress接口形式:http;返回内容:javascript 片段;查询地址:不可以可以指定 IP 地址;>>> 您可能感兴趣的文章:PHP获取访问者IP地址的二种方法php 操作IP地址库QQWry.dat的实例分享php获取真实ip地址的实例分享php 客户端IP地址的六种获取方法php 判断来访IP地址是国内还是国外的php 获取客户端IP地址、地理信息、浏览器信息、本地真实IP的代码php记录访问者IP地址的代码php根据IP地址获取当前地理位置接口php获取客户端IP地址的四种方法>>> 延伸阅读:php获取网站地理位置及操作系统信息的代码分享php通过IP获取地理位置的实例参考php 获取用户真实IP与地理位置(淘宝IP接口)的实现代码php 获取客户端IP地址、地理信息、浏览器信息、本地真实IP的代码php根据IP地址获取当前地理位置接口。
PHP准确取得服务器IP地址的⽅法本⽂实例讲述了PHP准确取得服务器IP地址的⽅法。
分享给⼤家供⼤家参考。
具体分析如下:在php中,我们⼀般通过$_SERVER['HTTP_HOST']来活得URL中⽹站的域名或者ip地址。
php⼿册中的解释如下:“HTTP_HOST”当前请求的 Host: 头信息的内容。
⼀般来说,这样⼦不会遇到什么问题,在⼀些常见的php框架中,如PFC3和FLEA也是基于该预定义变量。
然⽽最近在做的⼀个项⽬,程序移交到客户⼿⾥测试时,竟然发现程序的跳转总是会出错。
最后找出原因:$_SERVER['HTTP_HOST']在客户的环境⾥,取得的值总是程序所在的服务器在其局域⽹内的ip值。
究其原因,是因为,客户的公司通过⼀台服务器连接⾄因特⽹,⽽我们的程序所在的服务器,是通过域名映射出来的,也就是中间有个“代理”的过程。
因此$_SERVER['HTTP_HOST']在这样的环境⾥,取得的值总是程序所在的服务器在其局域⽹内的ip值。
最后查了不少资料,在symfony框架⾥⾯,找到替代的实现⽅法:将复制代码代码如下:$host = $_SERVER['HTTP_HOST'];替换成:复制代码代码如下:$host = isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] :(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '');希望本⽂所述对⼤家的php程序设计有所帮助。
php获取当前⽹址url并替换参数或⽹址的⽅法⼀是PHP获取当前页⾯的⽹址:复制代码代码如下://获得当前的脚本⽹址function GetCurUrl(){if(!empty($_SERVER["REQUEST_URI"])){$scriptName = $_SERVER["REQUEST_URI"];$nowurl = $scriptName;}else{$scriptName = $_SERVER["PHP_SELF"];if(empty($_SERVER["QUERY_STRING"])){$nowurl = $scriptName;}else{$nowurl = $scriptName."?".$_SERVER["QUERY_STRING"];}}return $nowurl;}另⼀个是PHP替换⽹址中query部分的某变量的值⽐如,我们要设$url中的key=321;其实有⼏种情况:$url='/a.php?key=330′;或$url='/a.php;或$url='/a.php?cat=2′;等等。
虽然情况很多,但PHP处理起来⾮常简单,如下:复制代码代码如下:/* 将URL中的某参数设为某值*/ //【这⼀段就挺好啊】function url_set_value($url,$key,$value){$a=explode('?',$url);$url_f=$a[0];$query=$a[1];parse_str($query,$arr);$arr[$key]=$value;return $url_f.'?'.http_build_query($arr);}不过我的替换是这样写的。
当然也很烂。
复制代码代码如下:<?php/***使⽤例程:可⽤于分页类或页⾯中的替换等$url = "add_jd.php?pid=4&tb=gm_jd&page=1";echo( "原始的URL:" . $url );echo( '<br/>' );echo( "字符串参数:" . url::replace( $url , "pid=10,page=2") );echo( '<br/>' );echo( "数组型参数:" . url::replace( $url , array('pid'=>10,'page'=>5)) );//echo( urlReplace( $url , array('pid'=>10,'page'=>5)) );*//*** url replace* @param string $url 需要替换的URL字符串,⼀般为aaa.php?abc=def,也可以带上路径,象/abc/def.php?aa=bb* @param mixed $options 需要替换的变量,可以是字符串或数组,如果是字符串,格式为"aa=bb,cc=dd",有多个,⽤","隔开* @return string $url 替换后的URL*/class url{static function replace ( $url , $options){$options = self::optInit( $options );$Query = parse_url( $url , PHP_URL_QUERY );if($Query){parse_str( $Query , $GET );if ( $GET ){//foreach ( $GET as $_k => $_v ){// //if( array_key_exists( $_k , $options)){// $GET[$_k] = $options[$_k];// //}//}$GET = array_merge($GET,$options);}return str_replace( $Query , http_build_query( $GET ), $url );}if( !$Query && $options ){return $url . "?" . http_build_query($options);}return $url;}static private function optInit ( $options ){if( is_string( $options )){$optlists = Power::Normalize( $options );foreach( $optlists as $val){list($tmpKey,$tmpVal) = Power::Normalize( $val , "=");$opts[$tmpKey] = $tmpVal;}}else{$opts = $options;}//unset( $options );return $opts;}}虽然考虑了⼀些东西,但也仅仅是个很⼀般的解决⽅法以下是⼀些补充资料:例:我需要获取当前的的URL 地址$url_this = "http://".$_SERVER ['HTTP_HOST'].$_SERVER['PHP_SELF'];echo $url_this;则显⽰: http://localhost/lu.php服务器变量:$_SERVER注: 在 PHP 4.1.0 及以后版本使⽤。
PHP中实现获取IP和地理位置类分享发现之前有⼀个脚本没有写完,简单扩充了⼀下。
获取IP使⽤的是经典的逻辑,地理定位使⽤的是SINA的通⽤接⼝。
使⽤⽅法详见源码:复制代码代码如下:<?php/** GET LOCATION BY SINA IP INTERFACE** @SOULTEARY 2013.04.14*/classIP{private $args=array();function__construct(){$this->args=self::init_args(func_get_args());$ip=self::GetIP();$ret=preg_match_all('/(\d+\.){3}\d+/i',$ip,$result);if(!$ret){returnfalse;}else{$result=$result[0];}if(isset($this->args['ONLYIP'])&&$this->args['ONLYIP']==true){if(isset($this->args['FORMAT'])&&$this->args['FORMAT']=='JSON'){$result=json_encode($result);}else{$result=implode(',',$result);}if(isset($this->args['ECHO'])&&$this->args['ECHO']==true){echo$result;returntrue;}else{return$result;}}else{$apiURL='/iplookup/iplookup.php?ip='.$result[0];if(isset($this->args['FORMAT'])&&$this->args['FORMAT']=='JSON'){$apiURL.='&format=json';$return=$this->ipCURL($apiURL);}else{$return=$this->ipCURL($apiURL);$return=iconv("GBK//IGNORE","UTF-8",$return);}if(isset($this->args['ECHO'])&&$this->args['ECHO']==true){echo$return;returntrue;}else{return$return;}}}public functioninit_args($args){$result=array();for($i=0,$n=count($args);$i<$n;$i++){$result=self::associative_push($args[$i],$result);}return$result;}public functionassociative_push($arr,$tmp){if(is_array($tmp)){foreach($tmpas$key=>$value){$arr[$key]=$value;}return$arr;}returnfalse;}public functionGetIP(){if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])&&$_SERVER['HTTP_X_FORWARDED_FOR']&&strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'],'unknown')) {return$_SERVER['HTTP_X_FORWARDED_FOR'];}elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){return$_SERVER['REMOTE_ADDR'];}}private functionipCURL($url){$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_HEADER,0);ob_start();curl_exec($ch);curl_close($ch);$result=ob_get_contents();ob_end_clean();return$result;}}><!DOCTYPE html><html><head><meta charset="utf8"><title>demo</title><script type="text/javascript">varip="<?php new IP(array('ONLYIP'=>true, 'ECHO'=>true));?>";vardata=<?php newIP(array('FORMAT'=>'JSON','ECHO'=>true));?>;varresult='';for(oo indata){result+=oo+':'+data[oo]+"\n";}alert(result+ip);</script></head><body><h1>CODE:</h1><h2>GETIP</h2><p>'ONLYIP'=>true,'ECHO'=>true</p><p><?phpnewIP(array('ONLYIP'=>true,'ECHO'=>true));?></p><P>'ONLYIP'=>true,'FORMAT'=>'JSON','ECHO'=>true</P><p><?phpnewIP(array('ONLYIP'=>true,'FORMAT'=>'JSON','ECHO'=>true));?></p><h2>GET Location</h2><p>'ECHO'=>true</p><p><?phpnewIP(array('ECHO'=>true));?></p><p>'FORMAT'=>'JSON','ECHO'=>true</p><p><?php newIP(array('FORMAT'=>'JSON','ECHO'=>true));?></p></body></html>。
PHP获取IP地址及根据IP判断城市实现城市切换或跳转前段时间,写了篇关于“PHP+MYSQL查询手机号码归属地”的文章。
其实,关于归属地查询,除了手机号码之外,IP地址也是大家关心的。
今天,就讨论一下在PHP中如何获取用户IP地址、PHP根据IP判断用户所在城市以及PHP根据IP实现城市切换或跳转的问题。
PHP获取IP地址这个比较简单了,利用PHP自带函数就可以了,PHP中文手册看一下,都有现成的例子,就不过多说明了,直接上代码,A段:<? //PHP获取当前用户IP地址方法 $xp_UserIp = ($_SERVER["HTTP_VIA"]) ?$_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $xp_UserIp =($xp_UserIp) ? $xp_UserIp : $_SERVER["REMOTE_ADDR"]; ?>PHP通过IP地址判断用户所在城市上文已经获得了用户IP地址,接下来,我们就是根据这个IP地址获得用户所在城市了。
开始之前,我们需要下载一个现成的数据库QQ IP数据库。
附:最新腾讯QQ IP数据库 2011.04.10 纯真版下载使用方法:解压后QQWry.Dat就是我们想要IP地址数据库,我们新建一个ipcity文件夹,将数据库放在下面。
QQ IP数据库使用非常方便,数据也很齐全,你可以及时关注官方更新以保持数据最新,强力推荐一下:)接下来,我们在上面的ipcity目录下新建一个ipaddress.php文件,直接复制以下代码进去即可,重要的地方也作了相应注释。
B段:<?function ipCity($userip) {//IP数据库路径,这里用的是QQ IP数据库 20110405 纯真版 $dat_path = 'QQWry.dat';//判断IP地址是否有效if(!ereg("^([0-9]{1,3}.){3}[0-9]{1,3}$", $userip)){return 'IP Address Invalid';}//打开IP数据库if(!$fd = @fopen($dat_path, 'rb')){return 'IP data file not exists or access denied';}//explode函数分解IP地址,运算得出整数形结果$userip = explode('.', $userip);$useripNum = $userip[0] * 16777216 + $userip[1] * 65536 + $userip[2] * 256 + $userip[3];//获取IP地址索引开始和结束位置$DataBegin = fread($fd, 4);$DataEnd = fread($fd, 4);$useripbegin = implode('', unpack('L', $DataBegin));if($useripbegin < 0) $useripbegin += pow(2, 32);$useripend = implode('', unpack('L', $DataEnd));if($useripend < 0) $useripend += pow(2, 32);$useripAllNum = ($useripend - $useripbegin) / 7 + 1;$BeginNum = 0;$EndNum = $useripAllNum;//使用二分查找法从索引记录中搜索匹配的IP地址记录while($userip1num>$useripNum || $userip2num<$useripNum) { $Middle= intval(($EndNum + $BeginNum) / 2);//偏移指针到索引位置读取4个字节fseek($fd, $useripbegin + 7 * $Middle);$useripData1 = fread($fd, 4);if(strlen($useripData1) < 4) {fclose($fd);return 'File Error';}//提取出来的数据转换成长整形,如果数据是负数则加上2的32次幂 $userip1num = implode('', unpack('L', $useripData1));if($userip1num < 0) $userip1num += pow(2, 32);//提取的长整型数大于我们IP地址则修改结束位置进行下一次循环 if($userip1num > $useripNum) {$EndNum = $Middle;continue;}//取完上一个索引后取下一个索引$DataSeek = fread($fd, 3);if(strlen($DataSeek) < 3) {fclose($fd);return 'File Error';}$DataSeek = implode('', unpack('L', $DataSeek.chr(0))); fseek($fd, $DataSeek);$useripData2 = fread($fd, 4);if(strlen($useripData2) < 4) {fclose($fd);return 'File Error';}$userip2num = implode('', unpack('L', $useripData2)); if($userip2num < 0) $userip2num += pow(2, 32);//找不到IP地址对应城市if($userip2num < $useripNum) {if($Middle == $BeginNum) {fclose($fd);return 'No Data';}$BeginNum = $Middle; }}$useripFlag = fread($fd, 1); if($useripFlag == chr(1)) {$useripSeek = fread($fd, 3); if(strlen($useripSeek) < 3) { fclose($fd);return 'System Error';}$useripSeek = implode('', unpack('L', $useripSeek.chr(0))); fseek($fd, $useripSeek);$useripFlag = fread($fd, 1);}if($useripFlag == chr(2)) {$AddrSeek = fread($fd, 3);if(strlen($AddrSeek) < 3) {fclose($fd);return 'System Error';}$useripFlag = fread($fd, 1);if($useripFlag == chr(2)) {$AddrSeek2 = fread($fd, 3);if(strlen($AddrSeek2) < 3) {fclose($fd);return 'System Error';}$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0))); fseek($fd, $AddrSeek2);} else {fseek($fd, -1, SEEK_CUR);}while(($char = fread($fd, 1)) != chr(0))$useripAddr2 .= $char;$AddrSeek = implode('', unpack('L', $AddrSeek.chr(0))); fseek($fd, $AddrSeek);while(($char = fread($fd, 1)) != chr(0))$useripAddr1 .= $char;} else {fseek($fd, -1, SEEK_CUR);while(($char = fread($fd, 1)) != chr(0))$useripAddr1 .= $char;$useripFlag = fread($fd, 1);if($useripFlag == chr(2)) {$AddrSeek2 = fread($fd, 3);if(strlen($AddrSeek2) < 3) {fclose($fd);return 'System Error';}$AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0))); fseek($fd, $AddrSeek2);} else {fseek($fd, -1, SEEK_CUR);}while(($char = fread($fd, 1)) != chr(0)){$useripAddr2 .= $char;}}fclose($fd);//返回IP地址对应的城市结果if(preg_match('/http/i', $useripAddr2)) {$useripAddr2 = '';}$useripaddr = "$useripAddr1 $useripAddr2";$useripaddr = preg_replace('//is', '', $useripaddr); $useripaddr = preg_replace('/^s*/is', '', $useripaddr);$useripaddr = preg_replace('/s*$/is', '', $useripaddr);if(preg_match('/http/i', $useripaddr) || $useripaddr == '') { $useripaddr = 'No Data';}return $useripaddr;}?>PHP根据IP地址实现城市切换或跳转到这里,其实问题已经很简单了,用简单的js就通通搞定。