利用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 stristr() 函数(不区分大小写的字符串查找)
Jun 03 PHP
php的memcached客户端memcached
Jun 14 PHP
php字符串截取的简单方法
Jul 04 PHP
PHP使用正则表达式清除超链接文本
Nov 12 PHP
php 生成短网址原理及代码
Jan 23 PHP
php实现的ping端口函数实例
Nov 12 PHP
php去除数组中重复数据
Nov 18 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
php实现遍历多维数组的方法
Nov 25 PHP
php实现倒计时效果
Dec 19 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 09 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
CI框架Session.php源码分析
2014/11/03 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
浏览器常用高宽的jquery插件
2011/02/24 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
[38:54]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第一场 11.28
2020/12/01 DOTA
Python的函数的一些高阶特性
2015/04/27 Python
Python实现查找系统盘中需要找的字符
2015/07/14 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
Python贪心算法实例小结
2018/04/22 Python
分享vim python缩进等一些配置
2018/07/02 Python
如何在django中添加日志功能
2020/02/06 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
巴西在线鞋店:Shoestock
2017/10/28 全球购物
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
文明餐桌活动方案
2014/02/11 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
建筑结构施工求职信
2014/07/11 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
乐山大佛导游词
2015/02/02 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
校运会广播稿
2015/08/19 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js
python绘图subplots函数使用模板的示例代码
2021/04/30 Python