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?
Wenn sich Ihr Computer im selben Netzwerk mit Ihrem Server befindet, hinter einem Router mit NAT, wird möglicherweise Ihre private IP-Adresse angezeigt.
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:
Wie Sie sehen können, ist die Reihenfolge des Arrays sehr wichtig:
Beachten Sie, dass REMOTE_ADDR
zuletzt kommt, weil dies der letzte Ausweg ist und die meiste Zeit falsch ist.
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.
Was ist die IP?
Mein einziger Gedanke wäre, dass Sie hinter einem Proxy stehen könnten. Könnte es sein?