$ _SERVER gibt Server-IP statt Besucher-IP an

Ich versuche IP-Adressen von Besuchern zu verfolgen. Bei Verwendung von $_SERVER["REMOTE_ADDR"] ich die IP-Adresse des Servers und nicht die des Besuchers. Ich habe das auf mehreren Rechnern an mehreren Standorten ausprobiert und alle ergaben genau die gleiche IP. Gibt es einige PHP / Server-Einstellungen, die dies beeinflussen könnten?

REMOTE_ADDR kann nicht vertrauenswürdig sein.

Wie auch immer, versuche es

 $ipAddress = $_SERVER['REMOTE_ADDR']; if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) { $ipAddress = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])); } 

Edit: Hat der Router Ihres Servers auch Port-Forwarding aktiviert? Es kann sein, dass es mit den Paketen unordentlich ist.

Bei Verwendung von $ _SERVER [“REMOTE_ADDR”] erhalte ich die IP-Adresse des Servers und nicht die des Besuchers.

Dann ist etwas falsch oder seltsam mit Ihrer Konfiguration.

  • Verwenden Sie eine Art Reverse-Proxy? In diesem Fall könnte der @ simshaun-Vorschlag funktionieren.

  • Haben Sie noch etwas ungewöhnliches in Ihrer Webserver-Konfiguration?

  • Können Sie den von Ihnen verwendeten PHP-Code anzeigen?

  • Können Sie zeigen, wie die Adresse aussieht? Ist es eine lokale oder eine Internetadresse?

$_SERVER['REMOTE_ADDR'] gibt die IP-Adresse an, von der die Anfrage an den Webserver gesendet wurde. Dies ist normalerweise die Adresse des Besuchers, aber in Ihrem Fall klingt es so, als ob eine Art Proxy direkt vor dem Web-Server sitzt, der die Anfragen abfängt, daher scheint es, als ob die Anfragen von dort stammen.

Suchen Sie nicht mehr nach IP-Adressen, die nicht im erwarteten Header festgelegt sind. Führen Sie die folgenden Schritte aus, um die gesamten Servervariablen zu überprüfen und herauszufinden, welche für Ihren Fall geeignet ist:

 print_r($_SERVER); 

Ersetzen:

 $_SERVER["REMOTE_ADDR"]; 

Mit:

 $_SERVER["HTTP_X_REAL_IP"]; 

Arbeitete für mich.