$remote_addr ist plötzlich unbekannt
Sebastian Klein
- php
0 romy0 Sven Rautenberg
Hallo,
bin noch recht neu, aber mach schon ein bisschen mit php und mysql rum.
Jetz hab ich meinen Rechner neuaufsetzen müssen und hab erstmal wieder alles neu installiert (Apache, php, mysql)
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.
Was mach ich denn da nun falsch? Vorher lief alles. Hab ich irgendwas bei der Apache-Konfiguration vergessen? Oder liegts an einer neueren Version von php, dass ich vielleicht nicht mehr per echo $REMOTE_ADDR; die IP-Adresse ausgeben kann?
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"].
Wie komme ich denn nun wieder an meine predefinierten Variablen ran?
Viele lieben Grüße,
Euer Basti
Hallo,
Oder liegts an einer neueren Version von php, dass ich vielleicht nicht mehr per echo $REMOTE_ADDR; die IP-Adresse ausgeben kann?
sicherlich, bei neueren Versionen ist register_globals=off und damit sind diese Art von Variablen nicht mehr nur über den varaibelnnamen ansprechbar...ist übrigens besser so
$_ENV["REMOTE_ADDR"]
da hast du den Finger doch schon auf der Wunde
Wie komme ich denn nun wieder an meine predefinierten Variablen ran?
so wie oben
Viele lieben Grüße,
ciao
Euer Basti
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