PHP $_SERVER['REMOTE_ADDR'] zeigt IPv6
Ich bin vor ein Problem mit $_SERVER['REMOTE_ADDR'] in PHP
Es gibt eine IPv6-wie-Wert, obwohl der server über IPv4.
Kann mir jemand helfen um dieses Problem zu beheben.
Sind Sie sicher, dass Ihr server läuft auf IPv4?
Dies ist, weil Ihr web-server ist die Bindung an [::], nicht 0.0.0.0.
Dies ist, weil Ihr web-server ist die Bindung an [::], nicht 0.0.0.0.
InformationsquelleAutor Brijesh | 2012-09-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem server ist dann die Annahme von verbindungen auf einem IPv6-socket. Einige Betriebssysteme können beide IPv4 und IPv6 auf einem IPv6-socket. Wenn das passiert, ist die IPv6 Adresse sieht wie
::ffff:192.0.2.123
oder::ffff:c000:027b
das ist die gleiche Adresse, aber in hexadezimaler Schreibweise geschrieben.Wenn Sie sehen, dass IPv6-Adressen wie
2a00:8640:1::224:36ff:feef:1d89
dann ist dein webserver wirklich ist über IPv6 erreichbar 🙂Sowieso, alles zu konvertieren zurück in eine kanonische form, die Sie verwenden können, so etwas wie:
Verwenden Sie diesen code, wenn Sie die Eingabe einer der folgenden:
bekommt man immer den kanonischen IPv4-Adresse
192.0.2.123
als Ausgabe.Und natürlich auch IPv6-Adressen zurückgegeben als kanonische IPv6-Adressen:
2a00:8640:0001:0000:0224:36ff:feef:1d89
wird2a00:8640:1::224:36ff:feef:1d89
etc.Ich habe versucht, das hinzufügen alle deine Beispiele auf mein test-script, und ich habe nie ausführen, die Ringel -, die Präfix. Sind es zu viele 0 in deinem Beispiel-code für alle Ihre Beispiele?
Nein, alle Beispiele gültig sind. Können Sie zeigen Sie Ihre test-Skripts?
inet_pton("192.000.002.123") gibt eine Warnung aus und gibt false zurück, PHP 5.3.6-10.
qbolec: Das ist ein Fehler auf Ihrer Plattform, dann... gehen Sie Bitte zu bugs.php.net und erstellen Sie einen Fehlerbericht, so kann es beseitigt werden.
InformationsquelleAutor Sander Steffann