帝国CMS根据ip跳转到不同的页面的方法

帝国CMS根据ip跳转到不同的页面的方法,第1张

帝国CMS根据ip跳转到不同的页面的方法

本文主要介绍了ImperialCMS根据ip跳转到不同页面的方法,主要分为三个部分:获取客户端ip,将IP地址转换成真实地址,根据真实地址进行js跳转。是一个非常实用的大型网站建设技巧,有需要的朋友可以参考一下。

本文阐述了ImperialCMS根据ip跳转到不同页面的方法。分享给你,供你参考。

具体实现代码如下:

复制代码如下:<?PHP
/PHP获取ip的算法
$user_IP=($_server["http_via"])?$_SERVER["HTTP_X_FORWARDED_FOR"]:$_SERVER["REMOTE_ADDR"];
$user_IP=($user_IP)?$user_IP:$_SERVER["REMOTE_ADDR"];

//echo$user_IP;
?>
上述方法获得客户端的IP地址后,调入convertip函数转换成真实地址。convertip($ip)函数的代码如下:

复制代码如下://========================[/br/=========================
函数Convertip($IP){
/IP数据文件路径
$DAT

//检查IP地址
if(!ereg("^([0-9]{1,3}.){3}[0-9]{1,3}$",$ip)){
返回“ip地址错误”;
}

/如果(!$fd=@fopen($dat_path,'Rb'){
返回“IP日期文件不存在或访问被拒绝”;
}

/分解IP进行运算,得到整数
$ip=explode('.',$IP);
$IPnum=$IP[0]*16777216+$IP[1]*65536+$IP[2]*256+$IP[3];

/获取IP数据索引的开始和结束位置
$DataBegin=fread($fd,4);
$DataEnd=fread($fd,4);
$ipbegin=内爆('',解包('L',$databegin));
if($IPbegin<;0)$ipbegin+=pow(2,32);
$ipend=内爆('),解包('L',$DataEnd));
if($ipend<;0)$ipend+=pow(2,32);
$ipAllNum=($ipend-$IPbegin)/7+1;

$beginnum=0;
$EndNum=$ipAllNum;

//使用二分搜索法方法从索引记录
中搜索匹配的IP记录while($IP1num>;$ipNum||$ip2num<$ipNum){
$Middle=intval(($EndNum+$beginnum)/2);

/将指针偏移到索引位置以读取4个字节
fseek($fd,$IPbegin+7*$middle);
$ipData1=fread($fd,4);
if(strlen($IPdata1)<;4){
fclose($FD);
返回“系统错误”;
}
/提取的数据转化为长整形,如果数据为负,则加2的32次方
$ip1num=implant('',unpack('l',$IPdata1));
if($IP1num<;0)$ip1num+=pow(2,32);

//如果提取的长整数大于我们的IP地址,修改下一个循环的结束位置
If($IP1num>;$ipNum){
$EndNum=$Middle;
继续;
}

/取完上一个后取下一个索引
$DataSeek=fread($fd,3);
if(strlen($DataSeek)<;3){
fclose($FD);
返回“系统错误”;
}
$DataSeek=内爆('',unpack('L',$DataSeek.chr(0)));
fseek($fd,$DataSeek);
$ipData2=fread($fd,4);
if(strlen($IPdata2)<;4){
fclose($FD);
返回“系统错误”;
}
$ip2num=内爆('',解包('L',$IPdata2));
if($IP2num<;0)$ip2num+=pow(2,32);

//找不到提示。未知
if($IP2num<$IPnum){
if($Middle==$beginnum){
fclose($FD);
返回“未知”;
}
$beginnum=$Middle;
}
}

/下面这段代码很晕,但是我看不懂。有兴趣的请慢慢读
$ipFlag=fread($fd,1);
if($IPflag==chr(1)){
$ipSeek=fread($FD,3);
if(strlen($ipSeek)<;3){
fclose($FD);
返回“系统错误”;
}
$ipSeek=内爆('',unpack('L',$ipSeek.chr(0)));
fseek($fd,$ipSeek);
$ipFlag=fread($fd,1);
}

if($IPflag==chr(2)){
$AddrSeek=fread($FD,3);
if(strlen($AddrSeek)<;3){
fclose($FD);
返回“系统错误”;
}
$ipFlag=fread($fd,1);
if($IPflag==chr(2)){
$addrseek2=fread($FD,3);
if(strlen($addrseek2)<;3){
fclose($FD);
返回“系统错误”;
}
$AddrSeek2=内爆('',unpack('L',$addrseek2.chr(0)));
fseek($fd,$addrseek2);
}else{
fseek($fd,-1,SEEK_CUR);
}

while(($char=fread($FD,1))!=chr(0))
$ipAddr2。=$char

$AddrSeek=内爆('',unpack('L',$AddrSeek.chr(0)));
fseek($fd,$AddrSeek);

while(($char=fread($FD,1))!=chr(0))
$ipAddr1。=$char
}else{
fseek($fd,-1,SEEK_CUR);
while(($char=fread($fd,1))!=chr(0))
$ipAddr1。=$char

$ipFlag=fread($fd,1);
if($IPflag==chr(2)){
$addrseek2=fread($FD,3);
if(strlen($addrseek2)<;3){
fclose($FD);
返回“系统错误”;
}
$AddrSeek2=内爆('',unpack('L',$addrseek2.chr(0)));
fseek($fd,$addrseek2);
}else{
fseek($fd,-1,SEEK_CUR);
}
while(($char=fread($FD,1))!=chr(0)){
$ipAddr2。=$char
}
}
fclose($FD);

/最后,经过相应的替换 *** 作后,返回结果
if(preg_match('/http/i',$IPaddr2)){
$IPaddr2='';
}
$IPaddr="$IPaddr1$IPaddr2";
$IPaddr=preg_replace('/CZ88。Net/is','',$IPaddr);
$IPaddr=preg_replace('/^s*/is','',$IPaddr);
$IPaddr=preg_replace('/s*$/is','',$IPaddr);
if(preg_match('/http/i',$IPaddr)||$IPaddr==''){
$IPaddr='Unknown';
}

return$IPaddr;
}
?>
使用时根据ip地址通过convertip函数获取真实地址,然后通过下面的js代码实现跳转功能:

复制代码如下:varsf=//这里的sf变量可以存储PHP函数
if得到的真实地址(SF.indexof("HongKong")>;=0){
window.location.href="http://www.****.com/?香港”;
}
elseif(sf.indexOf("广东省")>:=0){
window.location.href="http://www.****.com/?广东”;
}

我希望我在这篇文章中所说的对你建立你的帝国CMS站有所帮助。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/772753.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存