php多城市切换_php实现多城市切换特效

本文介绍了在PHP中如何获取用户IP地址,并利用IP库判断用户所在城市,实现城市切换功能。通过检查HTTP请求头获取IP,使用QQWry库解析IP定位到城市,结合GET参数和Cookie保存用户选择的城市,最后提供了JavaScript实现城市切换的简单方法。
摘要由CSDN通过智能技术生成

本文给大家主要分享的是在PHP中如何获取用户IP地址、PHP根据IP判断用户所在城市以及PHP根据IP实现城市切换或跳转的问题。

我们先来看下个人常用的代码

PHP

4) return 0;

foreach($ip as $ip_addr) {

if ( !is_numeric($ip_addr) ) return 0;

if ( $ip_addr<0 || $ip_addr>255 ) return 0;

}

return 1;

}

$ip=$_SERVER['REMOTE_ADDR'];

$ifErr=$QQWry->QQWry($ip);

$city = $QQWry->Country.$QQWry->Local;

//echo $city;*/

if (strpos($city,'玄武区')!==false){

$city = "玄武区";

}

else if(strpos($city,'仙林')!==false){

$city = "仙林";

}

else if(strpos($city,'秦淮区')!==false){

$city = "秦淮区";

}

else if(strpos($city,'江宁')!==false){

$city = "江宁";

}

else if(strpos($city,'鼓楼')!==false){

$city = "鼓楼";

}

else{

$city = "栖霞";

}

if (isset($_GET['chengshi'])) { //Ê×Ïȼì²âÊÇ·ñ»ñµÃÁË GET ´«µÝµÄÊý¾Ý

setcookie("cookie_city",$_GET['chengshi'],time()+3600*24);

$city = $_GET['chengshi'];

}

else if (isset($_COOKIE["cookie_city"])) { //¼ì²âÊÇ·ñ´æÔÚêdzÆCookie

$city = $_COOKIE["cookie_city"]; //ÏÔʾCookie±£´æµÄÊý¾Ý

}

else {

setcookie("cookie_city",$city,time()+3600*24); //´¿³õʼ»¯´Ë±äÁ¿

$_COOKIE["cookie_city"] = $city;

}

?>

HTML

城市切换

切换城市

另外附上网友的实现方法:

使用方法:解压后QQWry.Dat就是我们想要IP地址数据库,我们新建一个ipcity文件夹,将数据库放在下面。QQ IP数据库使用非常方便,数据也很齐全,你可以及时关注官方更新以保持数据最新,强力推荐一下:)

接下来,我们在上面的ipcity目录下新建一个ipaddress.php文件,直接复制以下代码进去即可,重要的地方也作了相应注释。B段:

$useripNum || $userip2num $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('/CZ88.Net/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就通通搞定。C段如下:

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值