it-swarm.com.de

$ _SERVER ['REMOTE_ADDR'] gibt nicht die richtige IP-Adresse an

Ich mache ein Formular mit PHP und möchte die IP-Adressen des Benutzers aufzeichnen. Dies ist der Code, den ich verwendet habe:

<input type="hidden" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" />

Wenn ich den Code in XAMPP öffne und die Quelle lese, hatte der Wert eine andere IP-Adresse als meine:

<input type="hidden" name="ip" value="::1" />

Tritt diese IP-Adresse normalerweise auf, wenn ich sie in einem localhost (XAMPP) verwende?
.__ Falls nicht, gibt es Alternativen, die IP-Adresse des Benutzers zu übernehmen?

11
zeldarulez

<input type="hidden" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" />

Mach das nicht. Erhalten Sie die Anforderung von $_SERVER, wenn das Formular gesendet wird. Wenn Sie es beim Generieren des Formulars abrufen und im Formular speichern, haben die Benutzer nur die Möglichkeit, es zu ändern.

Does this IP address normally happen when I use it in a localhost (XAMPP)?

Ja. Das Abrufen der lokalen IP-Adresse (IPv6) ist normal, wenn Sie eine Seite von localhost anfordern.

18
Quentin

IP ::1 ist in der IPv6-Version "localhost". Ihr Gerät ist mit IPv6 konfiguriert - daher erhalten Sie diese IP-Adresse. Wenn Sie Ihre Anwendung auf dem Live-Server bereitstellen, wird IPv6 wahrscheinlich nicht auf dem Server konfiguriert, und Ihre App erhält eine bekanntere IPv4-Adresse (z. B. aaa.bbb.ccc.ddd).

In einem anderen Hinweis enthält $_SERVER['REMOTE_ADDR'] möglicherweise nicht immer die richtige Adresse. Es ist besser zu benutzen:

if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    $ip_address = $_SERVER['REMOTE_ADDR'];
}
25
Aleks G

1). Sie müssen nicht <?php echo $_SERVER['REMOTE_ADDR']; ?> zum Formular hinzufügen. In diesem Fall ist es leicht zu fälschen (eigentlich ist es auf jeden Fall einfach). Fügen Sie den Daten auf der Serverseite besser IP hinzu.

2) Sie können auch nach $_SERVER['HTTP_X_FORWARDED_FOR']..__ suchen. Wenn ein Benutzer über einen Proxy verfügt, legen einige von ihnen (transparente Proxies) die IP-Adresse des echten Benutzers an.

3) Nur zu beachten: Daten über IPs sind überhaupt nicht vertrauenswürdig.

4
Nayjest

':: 1' ist die IPV6-Version von localhost (oder 127.0.0.1).

Öffnen Sie Port 80 und besuchen Sie die Seite von Ihrer IP-Adresse aus. Sollte dann gut funktionieren :).

4
Prash

Das ist eigentlich deine IP. Obwohl Ihre IPv6-IP und nicht IPv4.

In IPv6 steht :: 1 für localhost/127.0.0.1.

1
Khôi
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARTDED_FOR'] != '') {
                $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
            } else {
                $ip_address = $_SERVER['REMOTE_ADDR'];
            }   

Dieser Code gibt die IP des Clients zurück. Wenn Sie der Meinung sind, dass dies die Server-IP ist, haben Sie wahrscheinlich Recht, da Ihr Server (vermutlich) auf Ihrem PC gehostet ist .. Da Ihr Client (der PC) und der Server auf demselben PC laufen, haben beide dieselbe IP-Adresse Wenn du das nicht verstehst, solltest du wirklich Nachforschungen zu IPS, Local IPS und all dem machen.

0
Max