GVKun编程网logo

THinkPHP获取客户端IP与IP地址查询的方法(thinkphp in查询)

12

对于THinkPHP获取客户端IP与IP地址查询的方法感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍thinkphpin查询,并为您提供关于Java,Jsp获取客户端IP地址、jsp获取客户端

对于THinkPHP获取客户端IP与IP地址查询的方法感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍thinkphp in查询,并为您提供关于Java,Jsp获取客户端IP地址、jsp获取客户端IP地址的方法、PHP 获取客户端ip地址、php 获取客户端IP地址的简单示例的有用信息。

本文目录一览:

THinkPHP获取客户端IP与IP地址查询的方法(thinkphp in查询)

THinkPHP获取客户端IP与IP地址查询的方法(thinkphp in查询)

本文实例讲述了THinkPHP获取客户端IP与IP地址查询的方法。分享给大家供大家参考,具体如下:

TP 中获取客户端IP地址的系统公共函数是:function get_client_ip()。返回值就是IP地址。

查询IP地址所在国家与地区的类文件是IpLocation.class.PHP,位于ThinkPHP\Lib\ORG\Net目录下。类名是IpLocation,方法是

rush:PHP;"> public function getlocation($ip='');

省略时查询客户端IP所在地址。返回的是一个数组。没有查到的话返回值为空;查到的话,数组有值为:

rush:PHP;"> $location['ip']; $location['country']; $location['area'];

查询客户端IP及其对应地区的具体应用过程就是:

getlocation();//省略时表示查询客户端IP.$location可以直接输出使用,键名如上。

要是想查询特定IP或域名所在地区,过程是:

getlocation($ipname);//$location可以直接输出使用,键名如上。

要是只要查询客户端IP地址,可以直接用系统函数,如:

get_client_ip(); //很多网站都是 $ip= get_client_ip(); 其实都是错误的,大家要注意了。

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

Java,Jsp获取客户端IP地址

Java,Jsp获取客户端IP地址

request.getRemoteAddr(),这种方法在大部分情况下都是有效的,但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.
如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP.

经过代理以后,由于在客户端和服务器之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端.
但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息,用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址.

当我们访问index.jsp时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问index.jsp,代理服务器再将访问到的结果返回给我们的浏览器.
因为是代理服务器去访问index.jsp,所以index.jsp中通过request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址.

获得客户端真实IP地址的方法一:

public String getRemortIP(HttpServletRequest request) {
       if (request.getHeader("x-forwarded-for") == null) {
           return request.getRemoteAddr();
       }
       return request.getHeader("x-forwarded-for");
}
获得客户端真实IP地址的方法二:

public String getIpAddr(HttpServletRequest request) {
       String ip = request.getHeader("x-forwarded-for");
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
          ip = request.getHeader("Proxy-Client-IP");
       }
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
          ip = request.getHeader("WL-Proxy-Client-IP");
       }
       if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
          ip = request.getRemoteAddr();
       }
       return ip;
}

可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?
答案是取X-Forwarded-For中第一个非unknown的有效IP字符串.

如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
用户真实IP为:192.168.1.110

jsp获取客户端IP地址的方法

jsp获取客户端IP地址的方法

本文实例讲述了jsp获取客户端IP地址的方法。分享给大家供大家参考,具体如下:

public static String getIpAddr(HttpServletRequest request) { 
  String ip = request.getHeader("X-Forwarded-For");
  if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
   ip = request.getHeader("Proxy-Client-IP");
  }
  if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
   ip = request.getHeader("WL-Proxy-Client-IP");
  }
  if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
   ip = request.getHeader("HTTP_CLIENT_IP");
  }
  if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
   ip = request.getHeader("HTTP_X_FORWARDED_FOR");
  }
  if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
   ip = request.getRemoteAddr();
  }
  return ip;
}

希望本文所述对大家JSP程序设计有所帮助。

您可能感兴趣的文章:

PHP 获取客户端ip地址

PHP 获取客户端ip地址

https://www.cnblogs.com/rendd/p/6183094.html

一、如果没有使用代理服务器,

  REMOTE_ADDR = 客户端IP    HTTP_X_FORWARDED_FOR = 没数值或不显示

  $ip = $_SERVER[''REMOTE_ADDR''];

 

二、使用透明代理,

  REMOTE_ADDR = 最后一个代理服务器 IP
  HTTP_X_FORWARDED_FOR = 客户端真实 IP (经过多个代理服务器时,这个值类似:221.5.252.160, 203.98.182.163, 203.129.72.215)

  这类代理还会将客户真实ip发送到请求对象,无法隐藏真实ip。

  $ip = $_SERVER[''HTTP_X_FORWARDED_FOR''];

三、使用普通匿名代理服务器,

  REMOTE_ADDR = 最后一个代理服务器 IP
  HTTP_X_FORWARDED_FOR = 代理服务器 IP (经过多个代理服务器时,这个值类似:203.98.182.163, 203.98.182.163, 203.129.72.215)

  这样就隐藏了客户端的真实ip,但服务器会知道客户端是通过代理服务器去访问的。

四、使用欺骗性代理服务器,

  REMOTE_ADDR = 代理服务器 IP
  HTTP_X_FORWARDED_FOR = 随机的 IP(经过多个代理服务器时,这个值类似:220.4.251.159, 203.98.182.163, 203.129.72.215)

  服务器可以识别到时通过代理服务器访问的,但发送给目标服务器的是虚假ip。

五、使用高匿名代理,

  REMOTE_ADDR = 代理服务器 IP       HTTP_X_FORWARDED_FOR = 没数值或不显示

  使用这种代理时,不同浏览器不同设备会返回不同的ip头信息,因此PHP使用$_SERVER["REMOTE_ADDR"] 、$_SERVER["HTTP_X_FORWARDED_FOR"] 获取的值可能是空值也可能是“unknown”值。

PHP获取ip代码如下:

 
public function ip() {
    //strcasecmp 比较两个字符,不区分大小写。返回0,>0,<0。 if(getenv(''HTTP_CLIENT_IP'') && strcasecmp(getenv(''HTTP_CLIENT_IP''), ''unknown'')) { $ip = getenv(''HTTP_CLIENT_IP''); } elseif(getenv(''HTTP_X_FORWARDED_FOR'') && strcasecmp(getenv(''HTTP_X_FORWARDED_FOR''), ''unknown'')) { $ip = getenv(''HTTP_X_FORWARDED_FOR''); } elseif(getenv(''REMOTE_ADDR'') && strcasecmp(getenv(''REMOTE_ADDR''), ''unknown'')) { $ip = getenv(''REMOTE_ADDR''); } elseif(isset($_SERVER[''REMOTE_ADDR'']) && $_SERVER[''REMOTE_ADDR''] && strcasecmp($_SERVER[''REMOTE_ADDR''], ''unknown'')) { $ip = $_SERVER[''REMOTE_ADDR'']; } $res = preg_match ( ''/[\d\.]{7,15}/'', $ip, $matches ) ? $matches [0] : ''''; echo $res; //dump(phpinfo());//所有PHP配置信息 }
 

php 获取客户端IP地址的简单示例

php 获取客户端IP地址的简单示例

对PHP开启curl感兴趣的小伙伴,下面一起跟随小编 jb51.cc的小编两巴掌来看看吧!
PHP开启curl
开启PHP curl函数库的步骤
  1).去掉windows/PHP.ini 文件里;extension=php_curl.dll前面的; /*用 echo PHPinfo();查看PHP.ini的路径*/
  2).把PHP5/libeay32.dll,ssleay32.dll复制到系统目录windows/下
  3).重启apache
配置PHP支持curl
  curl是一个利用URL语法在命令行方式下工作的文件传输工具。它支持很多协议:FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE 以及 LDAP。curl同样支持HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,kerberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上载文件断点续传,http代理服务器管道( proxy tunneling),甚至它还支持IPv6,socks5代理服务器,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。Windows操作系统下的网络蚂蚁,网际快车(FlashGet)的功能它都可以做到。准确的说,curl支持文件的上传和下载,所以是一个综合传输工具,但是按照传统,用户习惯称curl为下载工具。
  配置方法:
  1、拷贝PHP目录中的libeay32.dll 和 ssleay32.dll 两个文件到 system32 目录。
  2、修改PHP.ini:配置好 extension_dir ,去掉 extension = php_curl.dll 前面的分号。
  ---------------------------
  PHP下扩展php_curl.dll的安装
 对PHP 获取客户端IP地址感兴趣的小伙伴,下面一起跟随小编 jb51.cc的小编两巴掌来看看吧!

/**
* PHP 获取客户端IP地址
*
* @param 
* @arrange 512-笔记网: 512Pic.com
**/
function GetIP()
{
if (@$_SERVER[HTTP_X_FORWARDED_FOR])
$ip = $_SERVER[HTTP_X_FORWARDED_FOR];
else if (@$_SERVER[HTTP_CLIENT_IP])
$ip = $_SERVER[HTTP_CLIENT_IP];
else if (@$_SERVER[REMOTE_ADDR])
$ip = $_SERVER[REMOTE_ADDR];
else if (@getenv(HTTP_X_FORWARDED_FOR))
$ip = getenv(HTTP_X_FORWARDED_FOR);
else if (@getenv(HTTP_CLIENT_IP))
$ip = getenv(HTTP_CLIENT_IP);
else if (@getenv(REMOTE_ADDR))
$ip = getenv(REMOTE_ADDR);
else
$ip = UnkNown;
return $ip;
}
/***   来自小编 jb51.cc(jb51.cc)   ***/
 ---------------------------
  已经内置有php_curl.dll,在ext目录下,此DLL用于支持SSL和zlib.
  在PHP.ini中找到有extension=php_curl.dll,去掉前面的注释.
  设置extension_dir=c:PHPext,刷新PHP页面时报错,说找不到模块php_curl.dll.
  拷贝php_curl.dll 到windowssystem32,还是同样的错.
  在网上找了一下,需要将:
  libeay32.dll,ssleay32.dll,PHP5ts.dll,php_curl.dll
  都拷贝到system32目录下,重启IIS即可.

关于THinkPHP获取客户端IP与IP地址查询的方法thinkphp in查询的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Java,Jsp获取客户端IP地址、jsp获取客户端IP地址的方法、PHP 获取客户端ip地址、php 获取客户端IP地址的简单示例的相关知识,请在本站寻找。

本文标签:

上一篇ThinkPHP简单使用memcache缓存的方法(thinkphp memcache)

下一篇thinkPHP框架对接支付宝即时到账接口回调操作示例(支付宝即时到账支付接口)