• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: 404号房间 | 发布时间: 2025-7-24 16:27| 查看数: 105| 评论数: 0|帖子模式

    本文实例讲述了帝国CMS根据ip跳转到不同的页面的方法。分享给大家供大家参考。
    具体实现代码如下:
     
    代码如下:
    上述方法获得客户端IP地址后,再传入convertip函数转化为真实地址,convertip($ip)函数代码如下:

    代码如下://=================================== 
    // 功能:IP地址获取真实地址函数 
    // 参数:$ip - IP地址 
    //=================================== 
    function convertip($ip) { 
    //IP数据文件路径 
    $dat_path = 'QQWry.dat'; 

    //检查IP地址 
    if(!ereg("^([0-9]{1,3}.){3}[0-9]{1,3}$", $ip)){ 
    return 'IP Address Error'; 


    //打开IP数据文件 
    if(!$fd = @fopen($dat_path, 'rb')){ 
    return 'IP date file not exists or access denied'; 


    //分解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 = implode('', unpack('L', $DataBegin)); 
    if($ipbegin < 0) $ipbegin += pow(2, 32); 
    $ipend = implode('', unpack('L', $DataEnd)); 
    if($ipend < 0) $ipend += pow(2, 32); 
    $ipAllNum = ($ipend - $ipbegin) / 7 + 1; 

    $BeginNum = 0; 
    $EndNum = $ipAllNum; 

    //使用二分查找法从索引记录中搜索匹配的IP记录 
    while($ip1num>$ipNum || $ip2num $ipNum) { 
    $EndNum = $Middle; 
    continue; 


    //取完上一个索引后取下一个索引 
    $DataSeek = fread($fd, 3); 
    if(strlen($DataSeek) < 3) { 
    fclose($fd); 
    return 'System Error'; 

    $DataSeek = implode('', unpack('L', $DataSeek.chr(0))); 
    fseek($fd, $DataSeek); 
    $ipData2 = fread($fd, 4); 
    if(strlen($ipData2) < 4) { 
    fclose($fd); 
    return 'System Error'; 

    $ip2num = implode('', unpack('L', $ipData2)); 
    if($ip2num < 0) $ip2num += pow(2, 32); 

    //没找到提示未知 
    if($ip2num < $ipNum) { 
    if($Middle == $BeginNum) { 
    fclose($fd); 
    return 'Unknown'; 

    $BeginNum = $Middle; 
    }


    //下面的代码读晕了,没读明白,有兴趣的慢慢读 
    $ipFlag = fread($fd, 1); 
    if($ipFlag == chr(1)) { 
    $ipSeek = fread($fd, 3); 
    if(strlen($ipSeek) < 3) { 
    fclose($fd); 
    return 'System Error'; 

    $ipSeek = implode('', 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); 
    return 'System Error'; 

    $ipFlag = fread($fd, 1); 
    if($ipFlag == 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)) 
    $ipAddr2 .= $char; 

    $AddrSeek = implode('', 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); 
    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)){ 
    $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; 

    ?>
    使用时通过convertip函数根据IP地址获取真实地址,再通过如下js代码实现跳转功能:

    代码如下:var sf='';//此处的sf变量可保存PHP函数获取到的真实地址
    if(sf.indexOf("香港")>=0){ 
    window.location.href="http://www.****.com/?香港"; 

    else if(sf.indexOf("广东省")>=0){ 
    window.location.href="http://www.****.com/?广东"; 

    希望本文所述对大家的帝国CMS建站有所帮助。

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表