Warum zeigt $ _SERVER ["REMOTE_ADDR"] eine andere IP als meine externe IP? [Duplikat]

8

Ich muss hier etwas Grundlegendes verpasst haben. Aber wenn ich zu einer IP-Display-Seite wie Ссылка navigiere, zeigen sie eine bestimmte IP. Aber wenn ich $_SERVER["REMOTE_ADDR"] auf einer Seite meiner Site auschecke, zeigt es eine andere IP.

Warum ist das? Und wie kann ich mit PHP dieselbe IP-Adresse abrufen, die auf der Website whatsmyip.org angezeigt wird?

    
Weblurk 23.05.2011, 13:21
quelle

6 Antworten

10

Wenn sich Ihr Computer im selben Netzwerk mit Ihrem Server befindet, hinter einem Router mit NAT, wird möglicherweise Ihre private IP-Adresse angezeigt.

    
Tudor Constantin 23.05.2011, 13:23
quelle
3

Lasst mich zuerst ein paar Dinge klären.

Wenn Sie auf localhost Ihren ISP nicht verwenden Um eine Webseite zu holen, würden Sie also eine interne IP von 127.0.0.1 oder ::1 für ipv6 verwenden.

Wenn Sie die Seite über ein lokales Netzwerk über einen Router abrufen, wird dem Router eine IP zugewiesen, z. B. 192.168.1.90

Wenn Ihre Site außerhalb des Netzwerks gehostet wird, bitten Sie Ihren ISP, die Site für Sie abzurufen, was bedeutet, dass Sie die von whatsmyip angegebene IP verwenden.

Wenn Sie einen DNS-Server wie Opendns verwenden, dann bitten Sie Ihren ISP, Opendns zu bitten, die Site für Sie abzurufen, und open DNS verwendet aus offensichtlichen Gründen eine Reihe von IPs, die sich von Ihren unterscheiden.

es kann eine Art von Proxy geben, der stören könnte, was Sie dagegen tun sollten, ist eine Standard-Proxy-Site, die die IP des Clients an den Server weiterleitet, falls direkte Verbindungen erforderlich sind, und aus verschiedenen anderen Gründen.

Dies gesagt, Sie können die IP normalerweise finden, indem Sie mehrere andere Parameter überprüfen, bevor Sie REMOTE_ADDR überprüfen, hier ist eine Klasse, die ich für eines meiner Projekte erstellt habe, aber Sie können einfach nehmen, was Sie brauchen:

Ссылка

%Vor%

Wie Sie sehen können, ist die Reihenfolge des Arrays sehr wichtig:

  • HTTP_CLIENT_IP
  • HTTP_X_FORWARDED_FOR
  • HTTP_X_FORWARDED
  • HTTP_X_CLUSTER_CLIENT_IP
  • HTTP_FORWARDED_FOR
  • HTTP_FORWARDED
  • REMOTE_ADDR

Beachten Sie, dass REMOTE_ADDR zuletzt kommt, weil dies der letzte Ausweg ist und die meiste Zeit falsch ist.

    
RobertPitt 23.05.2011 13:36
quelle
2

Wenn sich Ihr Webserver auf Ihrem lokalen Computer befindet, gibt er Ihnen meistens Ihre lokale IP-Adresse 127.0.0.1, weil Sie nicht von außen darauf zugreifen. Das ist Grund.

    
Senad Meškin 23.05.2011 13:23
quelle
1

Was ist die IP?

Mein einziger Gedanke wäre, dass Sie hinter einem Proxy stehen könnten. Könnte es sein?

    
Oliver M Grech 23.05.2011 13:24
quelle
1

Wenn Ihr Server Apache ist und Sie ein Frontend vor Apache verwenden, können Sie versuchen, mod_rpaf zu verwenden:
In Debian:
aptitude install libapache2-mod-rpaf
dann bearbeite config:
nano /etc/apache2/mods-enabled/rpaf.conf

%Vor%     
OZ_ 23.05.2011 14:02
quelle
0

Es könnte sein, dass Sie es von localhost besuchen? Ist die IP-Adresse 127.0.0.1 oder Ihre lokale IP-Adresse (192.168.x.x)?

    
TJHeuvel 23.05.2011 13:23
quelle

Tags und Links