当前位置:首页 > CMS教程 > 帝国cms > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2014-11-21 15:39:42 浏览: 评论:0 
  1. <?php 
  2. //php获取ip的算法 
  3. $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; 
  4. $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; 
  5.   
  6. //echo $user_IP; 
  7. ?> 
  8.   
  9. //=================================== 
  10. // 功能:IP地址获取真实地址函数 
  11. // 参数:$ip - IP地址 
  12. //=================================== 
  13. function convertip($ip) { 
  14.     //IP数据文件路径 
  15.     $dat_path = 'QQWry.dat'
  16.   
  17.     //检查IP地址 
  18.     if(!ereg("^([0-9]{1,3}.){3}[0-9]{1,3}$"$ip)){ 
  19.         return 'IP Address Error'
  20.     } 
  21.   
  22.     //打开IP数据文件 
  23.     if(!$fd = @fopen($dat_path'rb')){ 
  24.         return 'IP date file not exists or access denied'
  25.     } 
  26.   
  27.     //分解IP进行运算,得出整形数 
  28.     $ip = explode('.'$ip); 
  29.     $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3]; 
  30.   
  31.     //获取IP数据索引开始和结束位置 
  32.     $DataBegin = fread($fd, 4); 
  33.     $DataEnd = fread($fd, 4); 
  34.     $ipbegin = implode('', unpack('L'$DataBegin)); 
  35.     if($ipbegin < 0) $ipbegin += pow(2, 32); 
  36.     $ipend = implode('', unpack('L'$DataEnd)); 
  37.     if($ipend < 0) $ipend += pow(2, 32); 
  38.     $ipAllNum = ($ipend - $ipbegin) / 7 + 1; 
  39.   
  40.     $BeginNum = 0; 
  41.     $EndNum = $ipAllNum
  42.   
  43.     //使用二分查找法从索引记录中搜索匹配的IP记录 
  44.     while($ip1num>$ipNum || $ip2num<$ipNum) { 
  45.         $Middleintval(($EndNum + $BeginNum) / 2); 
  46.   
  47.         //偏移指针到索引位置读取4个字节 
  48.         fseek($fd$ipbegin + 7 * $Middle); 
  49.         $ipData1 = fread($fd, 4); 
  50.         if(strlen($ipData1) < 4) { 
  51.             fclose($fd); 
  52.             return 'System Error'
  53.         } 
  54.         //提取出来的数据转换成长整形,如果数据是负数则加上2的32次幂 
  55.         $ip1num = implode('', unpack('L'$ipData1)); 
  56.         if($ip1num < 0) $ip1num += pow(2, 32); 
  57.   
  58.         //提取的长整型数大于我们IP地址则修改结束位置进行下一次循环 
  59.         if($ip1num > $ipNum) { 
  60.             $EndNum = $Middle
  61.             continue
  62.         } 
  63.   
  64.         //取完上一个索引后取下一个索引 
  65.         $DataSeek = fread($fd, 3); 
  66.         if(strlen($DataSeek) < 3) { 
  67.             fclose($fd); 
  68.             return 'System Error'
  69.         } 
  70.         $DataSeek = implode('', unpack('L'$DataSeek.chr(0))); 
  71.         fseek($fd$DataSeek); 
  72.         $ipData2 = fread($fd, 4); 
  73.         if(strlen($ipData2) < 4) { 
  74.             fclose($fd); 
  75.             return 'System Error'
  76.         } 
  77.         $ip2num = implode('', unpack('L'$ipData2)); 
  78.         if($ip2num < 0) $ip2num += pow(2, 32); 
  79.   
  80.         //没找到提示未知 
  81.         if($ip2num < $ipNum) { 
  82.             if($Middle == $BeginNum) { 
  83.                 fclose($fd); 
  84.                 return 'Unknown'
  85.             } 
  86.             $BeginNum = $Middle
  87.         }//开源软件:phpfensi.com 
  88.     } 
  89.   
  90.     //下面的代码读晕了,没读明白,有兴趣的慢慢读 
  91.     $ipFlag = fread($fd, 1); 
  92.     if($ipFlag == chr(1)) { 
  93.         $ipSeek = fread($fd, 3); 
  94.         if(strlen($ipSeek) < 3) { 
  95.             fclose($fd); 
  96.             return 'System Error'
  97.         } 
  98.         $ipSeek = implode('', unpack('L'$ipSeek.chr(0))); 
  99.         fseek($fd$ipSeek); 
  100.         $ipFlag = fread($fd, 1); 
  101.     } 
  102.   
  103.     if($ipFlag == chr(2)) { 
  104.         $AddrSeek = fread($fd, 3); 
  105.         if(strlen($AddrSeek) < 3) { 
  106.             fclose($fd); 
  107.             return 'System Error'
  108.         } 
  109.         $ipFlag = fread($fd, 1); 
  110.         if($ipFlag == chr(2)) { 
  111.             $AddrSeek2 = fread($fd, 3); 
  112.             if(strlen($AddrSeek2) < 3) { 
  113.                 fclose($fd); 
  114.                 return 'System Error'
  115.             } 
  116.             $AddrSeek2 = implode('', unpack('L'$AddrSeek2.chr(0))); 
  117.             fseek($fd$AddrSeek2); 
  118.         } else { 
  119.             fseek($fd, -1, SEEK_CUR); 
  120.         } 
  121.   
  122.         while(($char = fread($fd, 1)) != chr(0)) 
  123.             $ipAddr2 .= $char
  124.   
  125.         $AddrSeek = implode('', unpack('L'$AddrSeek.chr(0))); 
  126.         fseek($fd$AddrSeek); 
  127.   
  128.         while(($char = fread($fd, 1)) != chr(0)) 
  129.             $ipAddr1 .= $char
  130.     } else { 
  131.         fseek($fd, -1, SEEK_CUR); 
  132.         while(($char = fread($fd, 1)) != chr(0)) 
  133.             $ipAddr1 .= $char
  134.   
  135.         $ipFlag = fread($fd, 1); 
  136.         if($ipFlag == chr(2)) { 
  137.             $AddrSeek2 = fread($fd, 3); 
  138.             if(strlen($AddrSeek2) < 3) { 
  139.                 fclose($fd); 
  140.                 return 'System Error'
  141.             } 
  142.             $AddrSeek2 = implode('', unpack('L'$AddrSeek2.chr(0))); 
  143.             fseek($fd$AddrSeek2); 
  144.         } else { 
  145.             fseek($fd, -1, SEEK_CUR); 
  146.         } 
  147.         while(($char = fread($fd, 1)) != chr(0)){ 
  148.             $ipAddr2 .= $char
  149.         } 
  150.     } 
  151.     fclose($fd); 
  152.   
  153.     //最后做相应的替换操作后返回结果 
  154.     if(preg_match('/http/i'$ipAddr2)) { 
  155.         $ipAddr2 = ''
  156.     } 
  157.     $ipaddr = "$ipAddr1 $ipAddr2"
  158.     $ipaddr = preg_replace('/CZ88.Net/is'''$ipaddr); 
  159.     $ipaddr = preg_replace('/^s*/is'''$ipaddr); 
  160.     $ipaddr = preg_replace('/s*$/is'''$ipaddr); 
  161.     if(preg_match('/http/i'$ipaddr) || $ipaddr == '') { 
  162.         $ipaddr = 'Unknown'
  163.     } 
  164.   
  165.     return $ipaddr
  166. ?> 
  167.   
  168.         var sf=''
  169.   
  170. if(sf.indexOf("香港")>=0){ 
  171.         window.location.href="http://www.****.com/?香港"
  172. else if(sf.indexOf("广东省")>=0){ 
  173.         window.location.href="http://www.****.com/?广东"
  174. }

Tags: 帝国CMS ip跳转页面

分享到: