一、没有使用代理服务器的情况:
REMOTE_ADDR = 您的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示
二、使用透明代理服务器的情况:Transparent Proxies
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。
三、使用普通匿名代理服务器的情况:Anonymous Proxies
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。
四、使用欺骗性代理服务器的情况:Distorting Proxies
REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。
五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)
REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
实例
/** * 获得用户的真实IP地址 * * @access public * @return string */ function real_ip() { // 初始化一个变量$realip static $realip = NULL; // 如果$realip不真等于NULL,返回之 if ($realip !== NULL) { return $realip; } // 如果$_SERVER有值 if (isset($_SERVER)) { // 如果$_SERVER['HTTP_X_FORWARDED_FOR']有值 // 表明客户端通过代理上网 if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { // 使用explode()函数将其用','分割成数组 $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); /* 取X-Forwarded-For中第一个非unknown的有效IP字符串 */ // 开始遍历数组 foreach ($arr AS $ip) { // 去掉首尾的空白 $ip = trim($ip); // 不是unknown就是真实上网地址,存值并退出循环 if ($ip != 'unknown') { $realip = $ip; break; } } } // $_SERVER['HTTP_X_FORWARDED_FOR']无值 且 // $_SERVER['HTTP_CLIENT_IP']有值,取其值作为真实IP elseif (isset($_SERVER['HTTP_CLIENT_IP'])) { $realip = $_SERVER['HTTP_CLIENT_IP']; } // $_SERVER['HTTP_X_FORWARDED_FOR']无值(不是用过代理上网)并且 // $_SERVER['HTTP_CLIENT_IP']也没有值 else { // 如果$_SERVER['REMOTE_ADDR']有值,取其值作为真实IP if (isset($_SERVER['REMOTE_ADDR'])) { $realip = $_SERVER['REMOTE_ADDR']; } else // 都没有值返回'0.0.0.0' { $realip = '0.0.0.0'; } } } // $_SERVER没有值 else { // 如果getenv('HTTP_X_FORWARDED_FOR')非空取其值作为真实IP if (getenv('HTTP_X_FORWARDED_FOR')) { $realip = getenv('HTTP_X_FORWARDED_FOR'); } // 如果getenv('HTTP_CLIENT_IP')非空取其值作为真实IP elseif (getenv('HTTP_CLIENT_IP')) { $realip = getenv('HTTP_CLIENT_IP'); } // 否则取getenv('REMOTE_ADDR')的值作为真实IP else { $realip = getenv('REMOTE_ADDR'); } } preg_match("/[d.]{7,15}/", $realip, $onlineip); // 此句干嘛用的?请高人指教一下。 $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0'; // 此句又是干嘛用的?请指教。 return $realip; }
最近在获取浏览客户端IP的功能的时候出现一个问题,主要的现象是这样的:一个在武汉使用北京电信的客户端的IP始终不能被我的程序访问,查了些资料修改了下,主要是对于c#获取IP的三种属性(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)的区分分析如下:
一、没有使用代理服务器的情况:
REMOTE_ADDR = 您的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示
二、使用透明代理服务器的情况:Transparent Proxies
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。
三、使用普通匿名代理服务器的情况:Anonymous Proxies
REMOTE_ADDR = 最后一个代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。
四、使用欺骗性代理服务器的情况:Distorting Proxies
REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。
五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)
REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。
完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。
针对以上的属性分析将代码改为:
/// <summary> /// 获取客户端Ip /// </summary> /// <returns></returns> public string GetUserIP() { string _userIP; try { if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] == null) { _userIP = HttpContext.Current.Request.UserHostAddress; } else { _userIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } } catch (Exception) { _userIP = "无法获取此IP"; } return _userIP; }
永久地址:
转载随意~请带上教程地址吧^^

PHP中的explode函数是一种用来将字符串分割成数组的函数,它非常常用且灵活。在使用explode函数的过程中,常常会遇到一些报错和问题,本文将介绍explode函数的基本用法并提供一些解决报错的方法。一、explode函数基本用法在PHP中,explode函数的基本语法如下:explode(string$separator,string$stri

标题:PHP中使用explode函数时常见的错误及解决方案在PHP中,explode函数是用于将字符串分割成数组的常用函数。然而,由于使用不当或者数据格式不正确,可能会导致一些常见的错误。本文将针对在使用explode函数时可能遇到的问题进行分析,并提供解决方案和具体的代码示例。错误一:未传入分隔符参数在使用explode函数时,最常见的错误之一是未传入分隔

在PHP编程中,处理字符串是一个经常需要进行的操作。其中,分割和合并字符串则是两种常见的需求。为了更方便地进行这些操作,PHP提供了两个非常实用的函数,即explode和implode函数。本文将介绍这两个函数的用法,以及一些实用的技巧。一、explode函数explode函数用于将一个字符串按照指定的分隔符进行分割,并返回一个数组。其函数原型如下:arra

C中的try和catch使用方法,需要具体代码示例在C语言中,没有内置的try和catch机制用于异常处理。然而,可以通过使用setjmp和longjmp函数来模拟try和catch的功能。下面我将详细介绍如何使用这两个函数进行异常处理,并给出相应的代码示例。首先,我们需要了解setjmp和longjmp函数的原理。setjmp函数被调用时,会保存当前程序的

php explode报错的解决办法:1、找到并打开出错的PHP代码;2、找到explode函数部分;3、修改代码为“dump(explode(',',$str));die;”,也就是用逗号分割为数组即可。

使用PHP函数"explode"将字符串拆分为数组在PHP开发中,经常会遇到需要将一个字符串按照指定的分隔符进行拆分的情况。这时,我们可以使用PHP内置函数"explode"来实现字符串到数组的转换。本文将介绍如何使用"explode"函数来拆分字符串,并给出相关的代码示例。"explode"函数的基本语法如下:arrayexplode(

使用PHP函数"explode"将字符串拆分为多个子字符串在PHP编程中,我们经常会遇到需要将一个字符串拆分为多个子字符串的情况。这时,PHP提供了一个非常方便的函数"explode",可以帮助我们轻松实现这个功能。"explode"函数的语法如下:arrayexplode(string$delimiter,string$string[,in

PHP的preg_match()函数:如何使用正则表达式匹配字符串,需要具体代码示例正则表达式在字符串处理中是非常强大和灵活的工具。在PHP中,使用preg_match()函数可以方便地进行字符串的正则匹配,从而实现各种复杂的模式匹配和替换操作。本文将介绍preg_match()函数的用法,并提供具体的代码示例来帮助读者更好地理解和应用。preg_match


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)
