利用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
解决GD中文乱码问题
Feb 14 PHP
PHP 文件类型判断代码
Mar 13 PHP
PHP CURL模拟GET及POST函数代码
Apr 25 PHP
PHP 全角转半角实现代码
May 16 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
Symfony2函数用法实例分析
Mar 18 PHP
PHP递归遍历多维数组实现无限分类的方法
May 06 PHP
PHP实现简易blog的制作
Oct 24 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 PHP
PHP ElasticSearch做搜索实例讲解
Feb 05 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异步执行的详解
2013/06/03 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
IE bug table元素的innerHTML
2010/01/11 Javascript
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
vue中路由验证和相应拦截的使用详解
2017/12/13 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
小程序开发之模态框组件封装
2020/04/23 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
django1.8使用表单上传文件的实现方法
2016/11/04 Python
python在每个字符后添加空格的实例
2018/05/07 Python
python2.7实现邮件发送功能
2018/12/12 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
python命令 -u参数用法解析
2019/10/24 Python
解决Pycharm 导入其他文件夹源码的2种方法
2020/02/12 Python
夜大毕业生自我鉴定
2013/10/31 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
2016年领导干部廉政承诺书
2016/03/24 职场文书
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js
Python基本知识点总结
2022/04/07 Python
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers