Sven Rautenberg: $remote_addr ist plötzlich unbekannt

Beitrag lesen

Moin!

Soweit läuft wieder alles, aber komischerweise meckert er mir nun die Variable $REMOTE_ADDR an, dass er diese nicht kennt.

Rufe ich phpinf(); auf, wird REMOTE_ADDR korrekt angezeigt.

Es wird nicht "REMOTE_ADDR" angezeigt, sondern

Wenn ich in der CMD-Box php -i aufrufe, bekomme ich jede Menge HTML-Code zurück und sehe da was von _ENV["REMOTE_ADDR"].

eben _ENV["REMOTE_ADDR"] und _SERVER["REMOTE_ADDR"].

Der Grund ist, dass seit PHP 4.2 von extern ans Skript herangetragene Informationen nicht mehr automatisch zu globalen Variablen werden. Das ist aus Sicherheitsgründen geschehen, weil viele unwissende PHP-Schreiber sich so ziemliche Sicherheitslücken in ihre Skripte geschrieben haben.

Die Ausgabe von phpinfo() sagt dir, in welchen Variaben die Informationen drinstehen. Setze noch ein $-Zeichen davor, und alles dürfte wieder funktionieren. Deine Parameter, die du mit GET, POST oder COOKIES an das Skript sendest, werden auf die gleiche Weise behandelt und stehen in $_GET, $_POST und $_COOKIE.

Lies insbesondere http://www.php.net/manual/de/security.registerglobals.php für eine genauere Erklärung.

- Sven Rautenberg

--
Diese Signatur gilt nur am Freitag.