利用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生成随机密码的几种方法
Jan 17 PHP
php数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
PHP得到mssql的存储过程的输出参数功能实现
Nov 23 PHP
php批量上传的实现代码
Jun 09 PHP
详谈PHP文件目录基础操作
Nov 11 PHP
php 使用array函数实现分页
Feb 13 PHP
php实现递归与无限分类的方法
Feb 16 PHP
php简单获取目录列表的方法
Mar 24 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
php简单实现数组分页的方法
Apr 30 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
Laravel框架源码解析之反射的使用详解
May 14 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中GET变量的使用
2006/10/09 PHP
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
python根据出生年份简单计算生肖的方法
2015/03/27 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
2017/08/31 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
Python telnet登陆功能实现代码
2020/04/16 Python
python破解同事的压缩包密码
2020/10/14 Python
公司培训心得体会
2014/01/03 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
资金主管岗位职责范本
2014/03/04 职场文书
推荐信模板
2014/05/09 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
小学教研工作总结2015
2015/05/13 职场文书
八年级物理教学反思
2016/02/19 职场文书
2019年怎样写好导游词?
2019/07/02 职场文书
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python