利用PHP获取网站访客的所在地位置


Posted in PHP onJanuary 18, 2017

前言

大家应该都有所体会,如果是做大型项目的话,网站获取用户的本地信息就很关键了,比如58分类信息网,在用户访问的时候会自己判断用户所在地的信息,然后可以跳转到相应的分站上面,这样给用户的体验很好,而不是全国各地的用户全部都来访问北京站或者上海站。

利用PHP获取访客所在地位置在大型站点中的应用很广,当然,除了这个应用之外,还可以举一反三出许多好玩的东西,今天就在做一个小项目的时候,用到了,在站点不同地区显示不同内容的小功能,其实跟上面的实例差不多。

实现分析

制作这样的一个小功能,当然首先就要考虑使用第三方的IP接口,目前,大一点的IP接口有淘宝,新浪,网易,QQ等,最终选择了新浪IP归属地的API,使用上面也很简单,利用获取到的IP地址,使用新浪接口,返回一个状态码,然后根据状态码获取用户所在地的位置,然后再进行各个地区显示不同内容的判断。

PHP的代码如下:

<?php 
$ip = "218.192.3.42"; 
$json = file_get_contents("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=".$ip); 
$json = json_decode($json, true); 
echo "IP地址:".$ip;//xiariboke.com 
echo "归属地:".$json["country"].$json["province"].$json["city"].$json["district"].$json["isp"]; 
?>

JS代码如下:

<script type="text/javascript" src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js" charset="utf-8"></script> 
<script type="text/javascript"> 
alert(remote_ip_info.country+" "+remote_ip_info.city); 
</script>

我们主要用到的是PHP的代码,这里的IP地址是固定的,如果想要获取访客的IP地址,直接更改为 $ip = $_SERVER["REMOTE_ADDR"]; 就可以了

下面再贴一段根据地区显示不同内容的PHP代码,如下:

<?php 
 $ip = $_SERVER["REMOTE_ADDR"]; 
 $json = file_get_contents("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=".$ip); 
 $json = json_decode($json, true); 
  
 if($json["province"]=="河北"){ 
  echo "document.writeln(\"河北");\n"; 
}//xiariboke.com 
 
 if($json["province"]=="河南"){ 
  echo "document.writeln(\"河南");\n"; 
} 
?>

这段代码没怎么整理与优化,在输出的时候,我这里输出了JS,这里可以更改为任何内容,甚至是跳转网址,另外,如果想要在静态页面中使用的话,也很简单,只要JS包含就可以了,代码如下:

<script type="text/javascript" src="ip.php?action=test"></script>

action 是传递的参数,如果没有用的话,可以删除掉。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
怎么使 Mysql 数据同步
Oct 09 PHP
在PHP中使用模板的方法
May 24 PHP
PHP Ajax中文乱码问题解决方法
Feb 27 PHP
PHP register_shutdown_function函数的深入解析
Jun 03 PHP
php生成数组的使用示例 php全组合算法
Jan 16 PHP
ThinkPHP使用smarty模板引擎的方法
Jul 01 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
Jul 12 PHP
PHP+MySQL之Insert Into数据插入用法分析
Sep 27 PHP
php中关于长度计算容易混淆的问题分析
May 27 PHP
php的debug相关函数用法示例
Jul 11 PHP
php实现xml转换数组的方法示例
Feb 03 PHP
Laravel-admin之修改操作日志的方法
Sep 30 PHP
PHP面向对象学习之parent::关键字
Jan 18 #PHP
php输出含有“#”字符串的方法
Jan 18 #PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
Jan 17 #PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 #PHP
yii使用bootstrap分页样式的实例
Jan 17 #PHP
关于Laravel Route重定向的一个注意点
Jan 16 #PHP
php文件管理基本功能简单操作
Jan 16 #PHP
You might like
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
简单实现js页面切换功能
2021/01/10 Javascript
js带闹铃功能的倒计时代码
2016/09/29 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
js实现弹窗效果
2020/08/09 Javascript
python实现类的静态变量用法实例
2015/05/08 Python
Python中with及contextlib的用法详解
2017/06/08 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
2020/01/28 Python
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
企业总经理职责
2014/02/02 职场文书
文明餐桌活动方案
2014/02/11 职场文书
共青团员自我评价范文
2014/09/14 职场文书
员工自我工作评价
2015/03/06 职场文书
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电
分享几个实用的CSS代码块
2022/06/10 HTML / CSS