获取用户真实ip地址的方法
一、没有使用代理服务器的情况:
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; }
永久地址:
转载随意~请带上教程地址吧^^

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

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

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

뜨거운 주제











PHP의 폭발 함수는 문자열을 배열로 분할하는 데 사용되는 함수입니다. 매우 일반적이고 유연합니다. 분해 기능을 사용하는 과정에서 몇 가지 오류와 문제가 자주 발생합니다. 이 기사에서는 분해 기능의 기본 사용법을 소개하고 오류 보고서를 해결하는 몇 가지 방법을 제공합니다. 1. 분해 함수의 기본 사용법 PHP에서 분해 함수의 기본 구문은 다음과 같습니다.

제목: PHP에서 분해 함수를 사용할 때 발생하는 일반적인 오류 및 해결 방법 PHP에서 분해 함수는 문자열을 배열로 분할하는 데 사용되는 일반적인 함수입니다. 그러나 부적절한 사용이나 잘못된 데이터 형식으로 인해 일부 일반적인 오류가 발생할 수 있습니다. 이 문서에서는 분해 기능을 사용할 때 발생할 수 있는 문제를 분석하고 해결 방법과 구체적인 코드 예제를 제공합니다. 실수 1: 구분자 매개변수가 전달되지 않습니다. 분해 기능을 사용할 때 가장 일반적인 실수 중 하나는 구분자 매개변수가 전달되지 않는다는 것입니다.

PHP 프로그래밍에서 문자열 처리는 자주 필요한 작업입니다. 그중 문자열 분할 및 병합은 두 가지 일반적인 요구 사항입니다. 이러한 작업을 보다 편리하게 수행하기 위해 PHP는 두 가지 매우 실용적인 기능, 즉 분해 및 내파 기능을 제공합니다. 이 기사에서는 이 두 가지 기능의 사용법과 몇 가지 실용적인 기술을 소개합니다. 1. 분해 함수 분해 함수는 지정된 구분 기호에 따라 문자열을 분할하고 배열을 반환하는 데 사용됩니다. 함수 프로토타입은 다음과 같습니다: arra

C에서 try 및 catch를 사용하려면 특정 코드 예제가 필요합니다. C 언어에는 예외 처리를 위한 내장된 try 및 catch 메커니즘이 없습니다. 그러나 try 및 catch 기능은 setjmp 및 longjmp 함수를 사용하여 시뮬레이션할 수 있습니다. 아래에서는 예외 처리를 위해 이 두 함수를 사용하는 방법을 자세히 소개하고 해당 코드 예제를 제공합니다. 먼저, setjmp와 longjmp 함수의 원리를 이해해야 합니다. setjmp 함수가 호출되면 현재 프로그램이 저장됩니다.

문자열을 배열로 분할하려면 PHP 함수 "explode"를 사용하십시오. PHP 개발에서는 지정된 구분 기호에 따라 문자열을 분할해야 하는 상황이 자주 발생합니다. 이때 PHP에 내장된 "explode" 함수를 사용하여 문자열을 배열로 변환할 수 있습니다. 이 문서에서는 "explode" 기능을 사용하여 문자열을 분할하는 방법을 소개하고 관련 코드 예제를 제공합니다. "explode" 함수의 기본 구문은 다음과 같습니다.

PHP 폭발 오류 해결 방법: 1. 잘못된 PHP 코드를 찾아 엽니다. 2. 폭발 함수 부분을 찾습니다. 3. 코드를 "dump(explode(',',$str));die;"로 수정합니다. , 배열을 쉼표로 구분하여 사용하세요.

문자열을 여러 하위 문자열로 분할하려면 PHP 함수 "explode"를 사용하세요. PHP 프로그래밍에서는 문자열을 여러 하위 문자열로 분할해야 하는 상황이 자주 발생합니다. 이때 PHP에서는 이 기능을 쉽게 구현할 수 있도록 도와주는 매우 편리한 "explode" 기능을 제공합니다. "explode" 함수의 구문은 다음과 같습니다: arrayexplode(string$delimiter,string$string[,in

PHP의 preg_match() 함수: 정규식을 사용하여 문자열을 일치시키는 방법, 특정 코드 예제가 필요합니다. 정규식은 문자열 처리에 있어 매우 강력하고 유연한 도구입니다. PHP에서는 preg_match() 함수를 사용하여 일반 문자열 일치를 쉽게 수행할 수 있으므로 다양하고 복잡한 패턴 일치 및 교체 작업을 수행할 수 있습니다. 이 기사에서는 preg_match() 함수의 사용법을 소개하고 독자가 이를 더 잘 이해하고 적용할 수 있도록 구체적인 코드 예제를 제공합니다. preg_match
