利用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 相关文章推荐
php中文件上传的安全问题
Oct 09 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
Jan 16 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
Jan 11 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
Eclipse的PHP插件PHPEclipse安装和使用
Jul 20 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
Sep 28 PHP
php将图片保存入mysql数据库失败的解决方法
Dec 27 PHP
Apache连接PHP后无法启动问题解决思路
Jun 18 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
Dec 21 PHP
对php 判断http还是https,以及获得当前url的方法详解
Jan 15 PHP
php+websocket 实现的聊天室功能详解
May 27 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.MVC的模板标签系统(五)
2006/09/05 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
jquery下拉select控件操作方法分享(jquery操作select)
2014/03/25 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
Python实现发送email的几种常用方法
2014/08/18 Python
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python使用gensim计算文档相似性
2016/04/10 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
Python 变量类型详解
2018/10/10 Python
Django REST framework 分页的实现代码
2019/06/19 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
什么是设计模式
2012/06/17 面试题
英文求职信结束语大全
2013/10/26 职场文书
树转促学习心得体会
2014/09/10 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
早读课迟到检讨书
2014/09/25 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
Java中PriorityQueue实现最小堆和最大堆的用法
2021/06/27 Java/Android