首页 > 编程语言 >php获取用户真实ip地址的方法

php获取用户真实ip地址的方法

时间:2023-07-23 09:11:17浏览次数:42  
标签:PHP ip json 用户 获取 地址 IP地址 php

大家应该都有所体会,如果是做大型项目的话,比如做一个全国各地区的信息港网站,网站获取用户的本地信息就很关键了,比如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,ip,json,用户,获取,地址,IP地址,php
From: https://www.cnblogs.com/yeci/p/17574667.html

相关文章

  • php获取用户ip并跳转指定城市
    ​现在很多网站都有做多城市的适配,用户进入了信息港主站之后就会跳转到对应的城市分站,这对用户来说也是比较友好的,<?phpinclude_once('./qqwry.php');$QQWry=newQQWry;  functionget_real_ip(){$ip=false;if(!empty($_SERVER["HTTP_CLIENT_IP"])){$ip=$_SERVER["H......
  • php根据提交ip获取省市的方法
    信息港根据现有IP地址获取其地理位置(省份,城市等)的方法functionGetIpLookup($ip=''){if(empty($ip)){return'请输入IP地址';}$res=@file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip='.$ip);if(empt......
  • mac在本地docker启动mysql提示chown: changing ownership of '/var/lib/mysql': O
    解决mac在本地docker启动mysql提示chown:changingownershipof'/var/lib/mysql':O问题介绍在使用Docker在本地启动MySQL时,有时会遇到权限问题,导致出现chown:changingownershipof'/var/lib/mysql':O的错误提示。这篇文章将向您展示如何解决这个问题,并为您提供了一些代码......
  • PHP uniqid重复值的问题
    $str='';for($i=0;$i<1000100;$i++){$str.=uniqid().PHP_EOL;}returnfile_put_contents('1.log',$str);生成1000100条数据,重复值为0放心用吧,插入数据100万的量,应该考虑Java了......
  • JavaScript
    溢出属性p{height:100px;width:50px;border:3pxsolidred;/*overflow:visible;!*默认就是可见溢出还是展示*!*//*overflow:hidden;!*溢出部分直接隐藏*!*//*overflow:scroll;!*设......
  • EtherCAT转TCP/IP网关EtherCAT和TCP/IP
    你是否曾经为生产管理系统的数据互联互通问题烦恼过?曾经因为协议不同导致通讯问题而感到困惑?现在,我们迎来了突破性的进展!介绍捷米特JM-TCPIP-ECT,一款自主研发的Ethercat从站功能的通讯网关。它能够连接到Ethercat总线中做为从站使用,同时也可以连接到TCP/IP网络中做为服务器或客户......
  • python 使用 ip池
    使用IP池进行爬虫在进行网络爬虫时,我们经常会遇到被网站封禁IP的问题。为了解决这个问题,我们可以使用IP池来轮流使用不同的IP地址,从而避免被封禁。在本文中,我们将介绍如何使用Python来实现IP池,以及如何在爬虫中使用它。什么是IP池IP池是一个用于存储多个IP地址......
  • [PHP 开源推荐] RDebug —— 滴滴开源的一款用于 RD 研发、自测、调试的实用工具
    一、简介https://github.com/didi/rdebugRdebug是滴滴开源的一款用于RD研发、自测、调试的实用工具,可以被用来提升RD研发效率、保障代码质量进而减少线上事故。1.1背景鉴于微服务具有易于扩展、部署简单、技术异构性等优点,越来越多的服务都在采用微服务的架构模式。一个复......
  • JavaScript继承
    继承—通过原型1.共同functionA(){}functionB(){}constg={a:1,b:2,};我想让从A、B构造出来的对象都具有g其中的属性,就可以通过继承A.prototype=gA.prototype.constructor=Aconsole.log(A.prototype)//{a:1,b:2,constructor:[Function:Man]}......
  • P1060 [NOIP2006 普及组] 开心的金明 题解
    思路01背包模版题,唯一不同的是加了一个条件就是价格与重要度的乘积。转移方程为:dp[j]=max(dp[j],dp[j-w[i]]+w[i]*v[i]);这里加了滚动数组优化。代码#include<bits/stdc++.h>#definelllonglong#defineldlongdoubleusingnamespacestd;inlinevoidread(int&x){......