Thomas Luethi: umgebungsvariable ausgeben

Beitrag lesen

Hallo,

Sorry, aber das:

echo $ENV['REMOTE_ADDR'];

ist Quatsch.
Die Ausgabe bei mir ist:
/
Ein Slash, nichts weiter.
Und nicht die gewuenschte IP-Nummer.

$ENV ist hier ein Pfad (String):
/etc/kshrc
Das gleiche steht in $_ENV['ENV']
und $ENV ist wohl nur verfuegbar,
weil hier register_globals=on ist.

Der Array $_ENV enthaelt bei mir ca. 40 Elemente,
aber keine einzige IP-Nummer.

echo "<p>Inhalt der Variable $_ENV:</p>\n";
echo "\n\n<pre>";
print_r($_ENV);
echo ")</pre>\n\n";

---

Wie kommt es nun zum "/" als Ausgabe Deiner Syntax?

Ich vermute folgendes:

Weil $ENV kein Array ist, meint PHP,
man wolle den x-ten Buchstaben des Strings.

$abc="abcdefghjklmnopqrstuvwxyz";
echo $abc[3]; // gibt den 4. Buchstaben, also "d";
// Bessere, eindeutigere und empfohlene Schreibweise:
echo $abc{3}; // gibt den 4. Buchstaben, also "d";

Weil 'REMOTE_ADDR' keine Zahl ist, wird
es als Null betrachtet, also will man
das Zeichen an Position Null, und das
ist der Slash.

Statt
$ENV['REMOTE_ADDR'];
koennte man geradesogut schreiben:
echo $ENV['gugus'];
Es wird ebenso "/" ausgegeben...

---

Ich brauche fuer die IP-Adresse immer
$ip = $_SERVER['REMOTE_ADDR'];

Daneben kriegt man sie auch mit
$ip = getenv ("REMOTE_ADDR");

Siehe auch das Manual (inkl. Benutzerkommentare) auf
http://www.php.net/manual/de/function.getenv.php

Bei register_globals=on steht die IP auch noch in $REMOTE_ADDR
$ip = $REMOTE_ADDR;

Gruesse,

Thomas

--
Dank /my/ automatisch ausgeblendet: JavaScript, ASP.
Manuell "ausgeblendet": Threads mit Frames, Iframes und Scrollbalken im Subject...
Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!