//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地址

// 作者:[Discuz!] (C) Comsenz Inc.

//

//===================================

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

$ipend = implode('', unpack('L', $DataEnd));

if($ipend

$ipAllNum = ($ipend - $ipbegin) / 7   1;

$BeginNum = 0;

$EndNum = $ipAllNum;

//使用二分查找法从索引记录中搜索匹配的IP记录

while($ip1num>$ipNum || $ip2num

$Middle= intval(($EndNum   $BeginNum) / 2);

//偏移指针到索引位置读取4个字节

fseek($fd, $ipbegin   7 * $Middle);

$ipData1 = fread($fd, 4);

if(strlen($ipData1)

fclose($fd);

return 'System Error';

}

//提取出来的数据转换成长整形,如果数据是负数则加上2的32次幂

$ip1num = implode('', unpack('L', $ipData1));

if($ip1num

//提取的长整型数大于我们IP地址则修改结束位置进行下一次循环

if($ip1num > $ipNum) {

$EndNum = $Middle;

continue;

}

//取完上一个索引后取下一个索引

$DataSeek = fread($fd, 3);

if(strlen($DataSeek)

fclose($fd);

return 'System Error';

}

$DataSeek = implode('', unpack('L', $DataSeek.chr(0)));

fseek($fd, $DataSeek);

$ipData2 = fread($fd, 4);

if(strlen($ipData2)

fclose($fd);

return 'System Error';

}

$ip2num = implode('', unpack('L', $ipData2));

if($ip2num

//没找到提示未知

if($ip2num

if($Middle == $BeginNum) {

fclose($fd);

return 'Unknown';

}

$BeginNum = $Middle;

}

}

//下面的代码读晕了,没读明白,有兴趣的慢慢读

$ipFlag = fread($fd, 1);

if($ipFlag == chr(1)) {

$ipSeek = fread($fd, 3);

if(strlen($ipSeek)

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)

fclose($fd);

return 'System Error';

}

$ipFlag = fread($fd, 1);

if($ipFlag == chr(2)) {

$AddrSeek2 = fread($fd, 3);

if(strlen($AddrSeek2)

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)

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='<?echo  convertip($user_IP);?>';

if(sf.indexOf("香港")>=0){

window.location.href="http://xianggang.jquerycn.cn";

}

else if(sf.indexOf("广东省")>=0){

window.location.href="http://guangdong.jquerycn.cn";

}

else if(sf.indexOf("北京")>=0){

window.location.href="http://beijing.jquerycn.cn";

}

else{

window.location.href="http://www.jquerycn.cn";

}

php跳转分站,根据访客所在城市ip地址自动跳转到分站的php代码相关推荐

  1. html页面跳转IP,JS获取访客IP进行自动跳转

    因业务需要进行地区判断跳转指定站点,下面是我个人实现的办法,分享给大家,仅供参考,切勿做非法用途 第一步,获取IP并判断归属地 直接使用搜狐的IP库查询接口 返回的地址是: var returnCit ...

  2. 如何确认访客所在的国家

    在建设网站的时候,有时会遇到根据不同国家的访客显示不同信息的需求.尤其是网站所用语言的国际化要求,比如对美国的访客显示英语,对中国的访客显示中文. 有两种途径能够解决此问题. 一. 使用Culture ...

  3. Node.js中使用百度统计API统计站点的访问量、访客数、IP数相关信息

    详情访问:详情 欢迎来我的个人网站:TanJia 今天,在个人网站的关于版块,添加了本站点的总访问量.总访客数以及当日的访问量等相关信息.使用的是百度统计的相关API. 首先,我们需要在百度统计中开通 ...

  4. php 获取到当前ip,获取当前IP地址,跳转到对应城市网站。

    1,通过获取当前IP地址, 2,调用新浪AIP,获取到当前城市. 3,将中文转换为拼音后跳转. 欢迎完善. 无 ?phpinclude './pinyin.php';//获取当前ipfunction ...

  5. javaWeb项目用过滤器filter实现登陆成功后才能访问主页面,否则直接输入主页面的地址自动跳转到登陆界面

    想用Filter实现一个登陆验证的功能,实现登陆成功后才能访问主页面,否则直接输入主页面的地址会自动跳转到登陆界面 原理很简单,每次登陆成功后,创建一个session域对象,将登陆成功的用户名保存在s ...

  6. wps 单元格跳动_WPS表格如何从首行跳到末行 WPS表格如何从首列自动跳到末列

    wps如何从首行快速跳到末行?WPS如何从首列快速跳到末列?WPS是效率工具,知道使用技巧可以节省很多时间.比如你在WPS处理表格时,需要从首行跳到末行第99行,用滚动就很花费时间.使用WPS自动跳动 ...

  7. 微信开发者工具地址自动跳转https问题处理

    在微信开发者工具是调式公众号页,打开http网址自动跳转到https的问题, 因为网址原来是https的,后来转成了http,但是开发工具记住了https,在访问地址时,会自动转为https的. Ma ...

  8. js layui跳转页面_Layer.js提示层弹窗结束之后自动跳转到新页面的效果

    弹层之美 Layer 是一款近年来备受青睐的web弹层组件,提供layer.open(options)核心调用方法.她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的 ...

  9. 【青松资讯】家用路由器DNS被篡改跳转至黄赌网站 受影响IP地址达400万个

    2月19日,CNCERT监测发现,境内部分用户通过家用路由器访问部分网站时被劫持到涉黄涉赌网站.经研判,这是一起典型的由互联网地下黑色产业争斗引发的网络安全事件.具体情况通报如下: 基本情况 CNCE ...

最新文章

  1. 阿里巴巴持续投入,etcd 正式加入 CNCF
  2. Python Excel操作模块XlsxWriter之插入图片worksheet.insert_image
  3. 全链路监控方案概述与比较
  4. typedef struct 先声明后定义_C++模版和C#泛型求同存异录(二)typedef
  5. 八.linux系统文件属性知识
  6. Dubbo负载均衡算法
  7. cellet 的相关线程
  8. 入门云数据库Redis,满足你的高读写性能场景需求
  9. python2转python3代码_Python2代码转成Python3代码
  10. PBFT 算法原理简介
  11. c语言结构体 单科成绩排序,【查错】怎样让结构体其他信息(姓名)对应关键值(成绩)排序输出...
  12. linux内核源码分析系列文章汇总
  13. 语料库语言学及python实现 李安 山东大学_语料库语言学
  14. 华为手机鸿蒙系统官方下载入口,华为鸿蒙系统升级入口
  15. 手机投屏不是全屏怎么办_一招搞定手机投屏不是全屏问题,手机投屏自适应全屏...
  16. 项目Beta冲刺(4/7)(追光的人)(2019.5.26)
  17. 统计学习方法 第二章 感知机
  18. 第一章,实现数据完整性
  19. PayPal开发之IPN的使用
  20. WIFI 国家码和信道划分

热门文章

  1. 算法高级(30)-外卖凑单算法-为什么每次点外卖你怎么都凑不够那碗卤肉饭呢?
  2. Redis 备份,容灾及高可用实战
  3. hbase hfile java_通过生成HFile导入HBase
  4. 177. Nth Highest Salary
  5. canvas 实现雷达图
  6. 名称节点和数据节点作用
  7. Java多线程及并发
  8. 2821: 作诗(Poetize)
  9. openStack Packages yum upgrade
  10. 【读书笔记】.NET本质论第四章-Programming with Type(Part Two)