So erhalten Sie die IP-Adresse des Clients in PHP: Die richtige Lösung
Hallo zusammen! Ich bin ein PHP-Anfänger und habe ein Problem damit, die echte IP-Adresse eines Besuchers meiner Website zu erhalten. Ich muss die IP für Spamschutz und Analysen protokollieren.
Das Problem ist, dass ich $_SERVER['REMOTE_ADDR'] verwende, aber wenn die Website hinter Cloudflare oder einem Nginx-Proxy läuft, gibt diese Methode die IP des Proxy-Servers zurück, nicht die des echten Benutzers. Ich habe verschiedene Ansätze ausprobiert, aber alle scheinen unzuverlässig.
Hier ist mein aktueller Code:
```php
$ip = $_SERVER['REMOTE_ADDR'];
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
echo "Ihre IP: " . $ip;
```
Aber ich habe gehört, dass HTTP-Header gefälscht werden können und ein Angreifer eine falsche IP senden kann. Wie erhalte ich die IP des Clients korrekt und sicher? Muss ich berücksichtigen, dass die IP IPv6 sein kann? Und was ist, wenn die Website über mehrere Proxys läuft?
Ich wäre dankbar für eine ausführliche Erklärung mit Codebeispielen.
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen