利用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 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
dedecms中显示数字验证码的修改方法
Mar 21 PHP
PHP日期时间函数的高级应用技巧
May 16 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
PHP中feof()函数实例测试
Aug 23 PHP
用 Composer构建自己的 PHP 框架之构建路由
Oct 30 PHP
php连接odbc数据源并保存与查询数据的方法
Dec 24 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
PHP DB 数据库连接类定义与用法示例
Mar 11 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 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
如何让搜索引擎抓取AJAX内容解决方案
2014/08/25 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
2018/01/06 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
python 绘制国旗的示例
2020/09/27 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
报关专员求职信范文
2014/02/22 职场文书
住房抵押登记委托书
2014/09/27 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
医院志愿者活动总结
2015/05/06 职场文书
利用Python判断你的密码难度等级
2021/06/02 Python
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript