利用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 相关文章推荐
消息持续发送的完整例子
Oct 09 PHP
PHP用户指南-cookies部分
Oct 09 PHP
PHP学习 变量使用总结
Mar 24 PHP
php过滤html标记属性类用法实例
Sep 23 PHP
php安装swoole扩展的方法
Mar 19 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
php的4种常用运行方式详解
Dec 22 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
Jun 21 PHP
阿里云PHP SMS短信服务验证码发送方法
Jul 11 PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
Apr 04 PHP
PHP实现一个轻量级容器的方法
Jan 28 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
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
Javascript事件实例详解
2013/11/06 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
Python单例模式实例详解
2017/03/01 Python
对Django url的几种使用方式详解
2019/08/06 Python
python pygame实现球球大作战
2019/11/25 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
python获取命令行参数实例方法讲解
2020/11/02 Python
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
介绍一下linux的文件权限
2012/02/15 面试题
学生就业推荐信
2013/11/13 职场文书
优秀教师获奖感言
2014/01/31 职场文书
材料加工工程求职信
2014/02/19 职场文书
丧事主持词大全
2014/04/02 职场文书
九一八事变纪念日演讲稿
2014/09/14 职场文书
详细了解MVC+proxy
2021/07/09 Java/Android
mysql主从复制的实现步骤
2021/10/24 MySQL
MySql数据库触发器使用教程
2022/06/01 MySQL