利用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的一个基础知识 表单提交
Jul 04 PHP
解析PHP汉字转换拼音的类
Jun 18 PHP
ThinkPHP CURD方法之table方法详解
Jun 18 PHP
php常用的url处理函数总结
Nov 19 PHP
php将图片保存入mysql数据库失败的解决方法
Dec 27 PHP
十幅图告诉你什么是PHP引用
Feb 22 PHP
php简单实现多字节字符串翻转的方法
Mar 31 PHP
PHP魔术方法的使用示例
Jun 23 PHP
thinkphp框架实现删除和批量删除
Jun 29 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
PHP通过GD库实现验证码功能示例
Feb 23 PHP
PHP实现的敏感词过滤方法示例
Mar 06 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&amp;java(二)
2006/10/09 PHP
php用数组返回无限分类的列表数据的代码
2010/08/08 PHP
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
Vue实现动态创建和删除数据的方法
2018/03/17 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
Vertx基于EventBus发送接受自定义对象
2020/11/16 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
Python中动态检测编码chardet的使用教程
2017/07/06 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
Python 修改列表中的元素方法
2018/06/26 Python
Python logging模块用法示例
2018/08/28 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
Python threading的使用方法解析
2019/08/28 Python
numba提升python运行速度的实例方法
2021/01/25 Python
天猫精选:上天猫,就够了
2016/09/21 全球购物
美国校园市场:OCM
2017/06/08 全球购物
值传递还是引用传递
2015/02/08 面试题
酒店节能降耗方案
2014/05/08 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
校园广播稿100字
2014/10/06 职场文书
讲座通知范文
2015/04/23 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
Apache POI的基本使用详解
2021/11/07 Servers
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫