您当前的位置: 首页 > 网站编程 > PHP教程 > php获得用户ip地址的比较不错的方法

php获得用户ip地址的比较不错的方法

作者:不详 来源:网络 发布时间: 2014-08-08 11:32 点击:
这篇文章主要介绍了php获得用户ip地址的方法,需要的朋友可以参考下 REMOTE_ADDR只能获取访问者本地连接中设置的IP,如某大学校园网中自己设置的10.X.XXX.XXX系列IP,而这个函数获取的是局域网网关出口的IP地址,如果访问者使用代理服务器,将不获取代理服务器的IP,而

php获得用户ip地址的比较不错的方法

  这篇文章主要介绍了php获得用户ip地址的方法,需要的朋友可以参考下

  REMOTE_ADDR只能获取访问者本地连接中设置的IP,如某大学校园网中自己设置的10.X.XXX.XXX系列IP,而这个函数获取的是局域网网关出口的IP地址,如果访问者使用代理服务器,将不获取代理服务器的IP,而是获取访问者网关的真实IP。如果将这个函数应用到限IP访问的网页中,别人即使通过限IP访问段中的代理服务器,也不能访问该页面。

  下面提供一个函数:

  代码如下:

  <?php

  // 定义一个函数getIP()

  function getIP()

  {

  global $ip;

  if (getenv("HTTP_CLIENT_IP"))

  $ip = getenv("HTTP_CLIENT_IP");

  else if(getenv("HTTP_X_FORWARDED_FOR"))

  $ip = getenv("HTTP_X_FORWARDED_FOR");

  else if(getenv("REMOTE_ADDR"))

  $ip = getenv("REMOTE_ADDR");

  else

  $ip = "Unknow";

  return $ip;

  }

  // 使用方法:

  echo getIP();

  ?>

  getenv("REMOTE_ADDR")用来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 getenv("HTTP_X_FORWARDED_FOR") 来读龋

  但是如果客户端没有通过代理服务器来访问,那么用getenv("HTTP_X_FORWARDED_FOR") 取到的值将是空的。

  复制代码 代码如下:

  else if(getenv("HTTP_X_FORWARDED_FOR"))

  $ip = getenv("HTTP_X_FORWARDED_FOR");

  表示如果getenv("HTTP_X_FORWARDED_FOR") 取到的值存在不为空(即客户端使用代理服务器的情况下),则变量$ip等于getenv("HTTP_X_FORWARDED_FOR") 取到的真实IP值。

  如果上面的else if(getenv("HTTP_X_FORWARDED_FOR"))取得的值为空(即没有使用代理服务器),则不会执行下面的$ip = getenv("HTTP_X_FORWARDED_FOR");这一行语句。

  这种情况下已经确认客户端没有使用代理服务器,从而通过

  复制代码 代码如下:

  else if(getenv("REMOTE_ADDR"))

  $ip = getenv("REMOTE_ADDR");

  这两行语句获得客户端的IP地址也是真实的IP地址。
分享到:
本文"php获得用户ip地址的比较不错的方法"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4