帝国CMS根据ip跳转到不同的页面
发布:smiling 来源: PHP粉丝网 添加日期:2014-11-21 15:39:42 浏览: 评论:0
- <?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地址获取真实地址函数
- // 参数:$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) {
- $Middle= intval(($EndNum + $BeginNum) / 2);
- //偏移指针到索引位置读取4个字节
- fseek($fd, $ipbegin + 7 * $Middle);
- $ipData1 = fread($fd, 4);
- if(strlen($ipData1) < 4) {
- fclose($fd);
- return 'System Error';
- }
- //提取出来的数据转换成长整形,如果数据是负数则加上2的32次幂
- $ip1num = implode('', unpack('L', $ipData1));
- if($ip1num < 0) $ip1num += pow(2, 32);
- //提取的长整型数大于我们IP地址则修改结束位置进行下一次循环
- if($ip1num > $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;
- }//开源软件:phpfensi.com
- }
- //下面的代码读晕了,没读明白,有兴趣的慢慢读
- $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;
- }
- ?>
- var sf='';
- if(sf.indexOf("香港")>=0){
- window.location.href="http://www.****.com/?香港";
- }
- else if(sf.indexOf("广东省")>=0){
- window.location.href="http://www.****.com/?广东";
- }
Tags: 帝国CMS ip跳转页面
相关文章
- ·帝国cms怎么加上转播功能(2013-11-15)
- ·帝国cms:修改提示框的样式以及跳转时间(2013-11-15)
- ·帝国cms新手教程帝国cms模板常用技巧总结分享(2013-11-15)
- ·帝国CMS移站方法 8步就搞定小方法(2013-11-15)
- ·帝国CMS风格样式方法(2013-11-15)
- ·帝国cms 解决后台登录次数不得超过5次限制的方法(2014-01-09)
- ·帝国cms超级管理员设置的一些问题(2014-01-09)
- ·帝国cms常用变量大全(2014-03-24)
- ·帝国cms7.0动态列表页面分页显示个数调整(2014-03-24)
- ·帝国CMS系统目录结构介绍 文件夹内容作用(2014-03-24)
- ·帝国cms 解决后台登录次数不得超过5次限制的方法(2014-03-24)
- ·帝国cms7.0如何在后台评论表1中显示自定义评论字段的内容(2014-03-26)
- ·帝国CMS顶级栏目如何调用所有顶级栏目(2014-03-26)
- ·关于帝国CMS栏目自定义字段函数 字段长度截取怎么写(2014-03-26)
- ·帝国cms灵动标签调用上一篇、下一篇(2014-03-27)
- ·帝国CMS当前位置[--[!--newsnav--]修改“首页”两个字(2014-03-27)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)