Heim php教程 php手册 获取用户真实ip地址的方法

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

May 25, 2016 pm 04:56 PM
catch explode preg_match

一、没有使用代理服务器的情况:

  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。

实例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

/**

* 获得用户的真实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;

}

Nach dem Login kopieren


最近在获取浏览客户端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。

   完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。

针对以上的属性分析将代码改为:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

/// <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;

        }

Nach dem Login kopieren

永久地址:

转载随意~请带上教程地址吧^^

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verwenden Sie die PHP-Explosionsfunktion und beheben Fehler So verwenden Sie die PHP-Explosionsfunktion und beheben Fehler Mar 10, 2024 am 09:18 AM

Die Explosionsfunktion in PHP ist eine Funktion zum Aufteilen einer Zeichenfolge in ein Array. Sie ist sehr verbreitet und flexibel. Bei der Verwendung der Explosionsfunktion treten häufig Fehler und Probleme auf. In diesem Artikel wird die grundlegende Verwendung der Explosionsfunktion vorgestellt und einige Methoden zur Lösung der Fehlerberichte bereitgestellt. 1. Grundlegende Verwendung der Explosionsfunktion In PHP lautet die grundlegende Syntax der Explosionsfunktion wie folgt: explosion(string$separator,string$stri

Teilen und verschmelzen Sie Zeichenfolgen mit den Funktionen „Explodieren' und „Implodieren'. Teilen und verschmelzen Sie Zeichenfolgen mit den Funktionen „Explodieren' und „Implodieren'. Jun 15, 2023 pm 08:42 PM

Bei der PHP-Programmierung ist die Verarbeitung von Strings ein häufig erforderlicher Vorgang. Unter diesen sind das Teilen und Zusammenführen von Zeichenfolgen zwei häufige Anforderungen. Um diese Vorgänge bequemer durchführen zu können, stellt PHP zwei sehr praktische Funktionen zur Verfügung, nämlich die Explode- und Implode-Funktion. In diesem Artikel werden die Verwendung dieser beiden Funktionen sowie einige praktische Fertigkeiten vorgestellt. 1. Die Explosionsfunktion Die Explosionsfunktion wird verwendet, um eine Zeichenfolge gemäß dem angegebenen Trennzeichen aufzuteilen und ein Array zurückzugeben. Sein Funktionsprototyp ist wie folgt: arra

Häufige Fehler und Lösungen bei der Verwendung der Explosionsfunktion in PHP Häufige Fehler und Lösungen bei der Verwendung der Explosionsfunktion in PHP Mar 11, 2024 am 08:33 AM

Titel: Häufige Fehler und Lösungen bei der Verwendung der Explosionsfunktion in PHP In PHP ist die Explosionsfunktion eine häufige Funktion, die zum Aufteilen eines Strings in ein Array verwendet wird. Allerdings können einige häufige Fehler aufgrund unsachgemäßer Verwendung oder eines falschen Datenformats auftreten. In diesem Artikel werden die Probleme analysiert, die bei der Verwendung der Explosionsfunktion auftreten können, und Lösungen sowie spezifische Codebeispiele bereitgestellt. Fehler 1: Der Trennzeichenparameter wird nicht übergeben. Bei der Verwendung der Explosionsfunktion besteht einer der häufigsten Fehler darin, dass der Trennzeichenparameter nicht übergeben wird.

Wie man Try and Catch in C verwendet Wie man Try and Catch in C verwendet Feb 21, 2024 am 09:03 AM

Für die Verwendung von Try and Catch in C sind bestimmte Codebeispiele erforderlich. In der Sprache C gibt es keinen integrierten Try and Catch-Mechanismus für die Ausnahmebehandlung. Die Funktionalität von Try und Catch kann jedoch mithilfe der Funktionen setjmp und longjmp simuliert werden. Im Folgenden werde ich detailliert vorstellen, wie diese beiden Funktionen zur Ausnahmebehandlung verwendet werden, und entsprechende Codebeispiele geben. Zunächst müssen wir die Prinzipien der Funktionen setjmp und longjmp verstehen. Wenn die Funktion setjmp aufgerufen wird, wird das aktuelle Programm gespeichert.

PHPs preg_match()-Funktion: So gleichen Sie Zeichenfolgen mit regulären Ausdrücken ab PHPs preg_match()-Funktion: So gleichen Sie Zeichenfolgen mit regulären Ausdrücken ab Nov 04, 2023 am 11:31 AM

PHPs preg_match()-Funktion: Wie man reguläre Ausdrücke zum Abgleichen von Zeichenfolgen verwendet, sind spezifische Codebeispiele erforderlich. Reguläre Ausdrücke sind sehr leistungsstarke und flexible Werkzeuge bei der Zeichenfolgenverarbeitung. In PHP kann die Funktion preg_match() verwendet werden, um auf einfache Weise einen regulären Zeichenfolgenabgleich durchzuführen und so verschiedene komplexe Musterabgleichs- und Ersetzungsvorgänge durchzuführen. In diesem Artikel wird die Verwendung der Funktion preg_match() vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern zu helfen, sie besser zu verstehen und anzuwenden. preg_match

Teilen Sie den String mithilfe der PHP-Funktion „explode' in ein Array auf. Teilen Sie den String mithilfe der PHP-Funktion „explode' in ein Array auf. Jul 24, 2023 pm 11:09 PM

Verwenden Sie die PHP-Funktion „explode“, um einen String in ein Array aufzuteilen. Bei der PHP-Entwicklung kommt es häufig vor, dass Sie einen String entsprechend dem angegebenen Trennzeichen aufteilen müssen. Zu diesem Zeitpunkt können wir die in PHP integrierte Funktion „explode“ verwenden, um einen String in ein Array zu konvertieren. In diesem Artikel wird erläutert, wie Sie mit der Funktion „explode“ eine Zeichenfolge aufteilen, und es werden relevante Codebeispiele gegeben. Die grundlegende Syntax der Funktion „explode“ lautet wie folgt: arrayexplode(

Verwenden Sie die PHP-Funktion „explode', um einen String in mehrere Teilstrings aufzuteilen Verwenden Sie die PHP-Funktion „explode', um einen String in mehrere Teilstrings aufzuteilen Jul 25, 2023 pm 06:29 PM

Verwenden Sie die PHP-Funktion „explode“, um einen String in mehrere Teilstrings aufzuteilen. Bei der PHP-Programmierung kommt es häufig vor, dass wir einen String in mehrere Teilstrings aufteilen müssen. Derzeit bietet PHP eine sehr praktische Funktion „Explodieren“, mit deren Hilfe wir diese Funktion einfach implementieren können. Die Syntax der Funktion „explode“ lautet wie folgt: arrayexplode(string$delimiter,string$string[,in

Was soll ich tun, wenn PHP Explode einen Fehler meldet? Was soll ich tun, wenn PHP Explode einen Fehler meldet? Jan 18, 2023 am 10:13 AM

Lösung für den PHP-Explosionsfehler: 1. Suchen und öffnen Sie den fehlerhaften PHP-Code. 2. Suchen Sie den Explosionsfunktionsteil , verwenden Sie das Array einfach durch Kommas.

See all articles