线上服务咨询
PHP通过IP
发表时间:2019-07-30 16:48:54
文章来源:沈阳软件开发
标签:网站建设 小程序开发 小程序制作 微信小程序开发 公众号开发 微信公众号开发 网页设计 网站优化 网站排名 网站设计 微信小程序设计 小程序定制 微信小程序定制
浏览次数:0
获取当前城市 PHP获取IP地址
这个比较简单,你可以使用PHP自带的函数,PHP中文手册看看,有现成的例子,但更多的解释,直接就代码,
A部分:
$ 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地址获取用户的城市。在我们开始之前,我们需要下载一个现成的数据库QQIP数据库。
附:最新腾讯QQIP数据库2011.04.10纯版下载
用法:解压后QQWry.Dat是我们想要IP地址的数据库,我们创建一个新的ipcity文件夹,把数据库放在下面。 QQIP数据库使用起来非常方便,数据也很齐全,可以及时关注官方更新,保持数据最新,强烈推荐它:)
接下来,我们在上面的ipcity目录中创建一个新的ipaddress.php文件,直接复制以下代码,并评论重要的地方。
B节:
/*函数名称:ipCity
参数说明:$ userip——用户IP地址
功能:PHP通过IP地址判断用户的城市
作者:杰森
联系: admin@sslook.com */
functionipCity($ USERIP){
//IP数据库路径,这里是QQIP数据库20110405纯版
$ dat_path=” QQWry.dat”;
//确定IP地址是否有效
如果(!EREG( “^([0-9] {1,3})。{3} [0-9] {1,3} $”,$ USERIP)){
Return'IPAddressInvalid”;
}
//打开IP数据库
如果(!$ FD=@的fopen($ dat_path,” RB”)){
Return'IPdatafilenotexistsoraccessdenied”;
}
//explode函数分解IP地址并计算整数形状的结果
$ USERIP=爆炸(,$ USERIP“”);
$ useripNum=$ USERIP [0] * 16777216 + $ USERIP [1] * 65536 + $ USERIP [2] * 256 + $ USERIP [3];
//获取IP地址索引的开始和结束位置
$ DataBegin=的fread($ FD,4);
$ DATAEND=的fread($ FD,4);
$ useripbegin=破灭(”解包(‘L’,$ DataBegin));
如果($ useripbegin℃,)$ useripbegin +=POW(2,32);
$ useripend=破灭(”解包(‘L’,$ DATAEND));
如果($ useripend℃,)$ useripend +=POW(2,32);
$ useripAllNum=($ $ useripend- useripbegin)/7 + 1;
$ BeginNum=0;
$ EndNum=$ useripAllNum;
//使用二进制搜索方法从索引记录中搜索匹配的IP地址记录
而($ userip1num> $ useripNum || $ userip2num< $ useripNum){
$中东=INTVAL(($ EndNum + $ BeginNum)/2);
//将索引位置的偏移指针读取为4个字节
FSEEK($ FD,$ useripbegin + 7 * $中);
$ useripData1=的fread($ FD,4);
如果(strlen的($ useripData1)LT; 4){<>
FCLOSE($ FD);
return'FileError”;
}
//提取数据转换增长整形,如果数据为负,则再加2到32次幂
$ userip1num=破灭(”解包(‘L’,$ useripData1));
如果($ userip1num℃,)$ userip1num +=POW(2,32);
//提取的长整数的数量大于我们的IP地址,并且为下一个循环修改结束位置
如果($ userip1num> $ useripNum){
$ EndNum=$中东;
继续;
}
//在取得上一个索引后取最后一个索引
$ DataSeek=的fread($ FD,3);
如果(strlen的($ DataSeek)LT; 3){<>
FCLOSE($ FD);
return'FileError”;
}
$ DataSeek=破灭(”解压缩(‘L’,$ DataSeek.chr(0)));
FSEEK($ FD,$ DataSeek);
$ useripData2=的fread($ FD,4);
如果(strlen的($ useripData2)LT; 4){<>
FCLOSE($ FD);
return'FileError”;
}
$ userip2num=破灭(”解包(‘L’,$ useripData2));
如果($ userip2num℃,)$ userip2num +=POW(2,32);
//找不到与IP地址对应的城市
如果($ userip2num< $ useripNum){
如果($中东==$ BeginNum){
FCLOSE($ FD);
Return'NoData”;
}
$ BeginNum=$中东;
}
}
$ useripFlag=的fread($ FD,1);
如果($ useripFlag==CHR(1)){
$ useripSeek=的fread($ FD,3);
如果(strlen的($ useripSeek)LT; 3){<>
FCLOSE($ FD);
Return'SystemError”;
}
$ useripSeek=破灭(”解压缩(‘L’,$ useripSeek.chr(0)));
FSEEK($ FD,$ useripSeek);
$ useripFlag=的fread($ FD,1);
}如果($ useripFlag==CHR(2)){
$ AddrSeek=的fread($ FD,3);
如果(strlen的($ AddrSeek)LT; 3){<>
FCLOSE($ FD);
Return'SystemError”;
}
$ useripFlag=的fread($ FD,1);
如果($ useripFlag==CHR(2)){
$ AddrSeek2=的fread($ FD,3);
如果(strlen的($ AddrSeek2)LT; 3){<>
FCLOSE($ FD);
Return'SystemError”;
}
$ AddrSeek2=破灭(”解压缩(‘L’,$ AddrSeek2.chr(0)));
FSEEK($ FD,$ AddrSeek2);
}否则{
FSEEK($ FD,-1,SEEK_CUR);
}
而(($焦炭=的fread($ FD,1))!=CHR(0))
$ useripAddr2=$炭;
$ AddrSeek=破灭(”解压缩(‘L’,$ AddrSeek.chr(0)));
FSEEK($ FD,$ AddrSeek);而(($焦炭=的fread($ FD,1))!=CHR(0))
$ useripAddr1=$炭;}否则{
FSEEK($ FD,-1,SEEK_CUR);
而(($焦炭=的fread($ FD,1))!=CHR(0))
$ useripAddr1=$炭;
$ useripFlag=的fread($ FD,1);
如果($ useripFlag==CHR(2)){
$ AddrSeek2=的fread($ FD,3);
如果(strlen的($ AddrSeek2)LT; 3){<>
FCLOSE($ FD);
Return'SystemError”;
}
$ AddrSeek2=破灭(”解压缩(‘L’,$ AddrSeek2.chr(0)));
FSEEK($ FD,$ AddrSeek2);
}否则{
FSEEK($ FD,-1,SEEK_CUR);
}
而(($焦炭=的fread($ FD,1))!=CHR(0)){
$ useripAddr2=$炭;
}}
FCLOSE($ FD);
//返回与IP地址对应的城市结果如果(的preg_match(“/HTTP/I”,$ useripAddr2)){
$ useripAddr2=”;
}
$ useripaddr=” $ $ useripAddr1 useripAddr2” ;
$ useripaddr=preg_replace函数(“/CZ88.Net/is”,”,$ useripaddr);
$ useripaddr=preg_replace函数(“/^ S * /是”,”,$ useripaddr);
$ useripaddr=preg_replace函数(“/S * $ /是”,”,$ useripaddr);
如果(的preg_match(“/HTTP/I”,$ useripaddr)|| $ useripaddr==”){
$ useripaddr=”无数据”;
}
返回$ useripaddr;
}
?>
PHP根据IP地址实现城市切换或跳转
此时,问题已经非常简单,可以使用简单的js完成。
C节如下:
//根据IP地址跳转到指定的页面js来获取城市
Varcity=””;
//所有城市都根据IP地址跳转到指定页面
如果(city.indexOf( “上海”)>=0){
Window.location.href=“http://shanghai.demo.com /”;
}
将第一段A段代码和上面的C段代码放在B段代码的开头和结尾,然后我们将以下代码添加到需要跳转的页面中:
刷新页面,是否达到了预期的效果?
网站建设,小程序开发,小程序制作,微信小程序开发,公众号开发,微信公众号开发,网页设计,网站优化,网站排名,网站设计,微信小程序设计,小程序定制,微信小程序定制