Sebastian Klein: $remote_addr ist plötzlich unbekannt

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

  1. 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

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    ->Alles ist gut wenn es aus Schokolade ist
  2. 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.