umgebungsvariable ausgeben
sven
- php
0 Thomas Luethi0 Andavos0 fastix®0 sven
hallo ich möchte gerne per php die remote ip ausgeben. ich weis, das die umgebungsvariable $ENV{'REMOTE_ADDR'} lautet. da ich in sachen php noch ein anfänger bin weis ich nur den folgenden code-teil
<?php
$ENV{'REMOTE_ADDR'}
echo $ENV
?>
allerdings zeigt es mir da nicht die ip adresse sondern
Parse error: parse error, unexpected T_ECHO in /home/www/htdocs/aimworld.de/ip.php on line 3
kann mir jemand sagen warum das nicht funktioniert?
danke im voraus :-)
grüße sven
Hallo,
$ENV{'REMOTE_ADDR'}
echo $ENV
Parse error: parse error, unexpected T_ECHO in /home/www/htdocs/aimworld.de/ip.php on line 3
Am Schluss jedes Befehls/jeder Zeile (ausser der letzten)
muss ein Semikolon stehen.
$ENV{'REMOTE_ADDR'}
ist nicht PHP-Syntax.
Zudem habe ich keine Ahnung, was Du mit der Variable
in dieser Zeile tun willst.
---
Wenn Du der Variable $ip die IP-Adresse zuweisen willst
und diese danach ausgeben willst:
$ip=$_SERVER['REMOTE_ADDR'];
echo $ip;
Dein PHP-Buch (?) ist offenbar nicht ganz auf dem
neuesten Stand bzw. enthaelt grobe Fehler.
Lies mal:
PHP-Manual: Predefined Variables (englisch,
die deutsche Uebersetzung ist unvollstaendig/veraltet)
http://www.php.net/manual/en/language.variables.predefined.php und
http://www.php.net/manual/en/reserved.variables.php
Gruesse,
Thomas
Hallo,
<?PHP
$ip = getenv("REMOTE_ADDR");
echo $ip;
?>
MFG
Andavos
Moin!
Das war wohl eine Mischung aus PHP und Perl -> richtige Syntax, falsche Programmiersprache :)
<?php
echo $ENV['REMOTE_ADDR'];
echo "<hr>Noch ein kleiner Tip:<hr>";
phpinfo();
?>
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
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
Moin!
Jepp. Du hast mich dabei erwischt:
a) einen Unterstrich vergessen zu haben
b) eventuell womöglich vielleicht nicht nachgeschaut zu haben, was $_ENV nun alles "kennt".
Jetzt kannst Du Dich freuen, daß Du Recht hast und den ganzen Abend lang überlegen, warum der liebe fastix grinsend das phpinfo(); dazugeschrieben hat.
fastix®
Hallo fastix,
Jepp. Du hast mich dabei erwischt:
Sorry, ich wollte Dir nicht auf die Fuesse treten.
Ich hatte einfach den Eindruck, dass Du selbst da
auch etwas verwechselst mit Perl oder so, und
dass Du jetzt den Fehler von sven verschlimmbesserst.
Jetzt kannst Du Dich freuen, daß Du Recht hast und den ganzen Abend lang überlegen, warum der liebe fastix grinsend das phpinfo(); dazugeschrieben hat.
Die Ausgabe von phpinfo() ist ja oft hilfreich.
In dem Fall - fuer den PHP-Neuling sven - steht
leider nicht "klipp und klar" drin, was er sucht.
Da steht einerseits:
Apache Environment
REMOTE_ADDR 123.321.123.321
=> man muss schon wissen, dass man da z.B. mit
getenv("REMOTE_ADDR")
rankommt.
$REMOTE_ADDR selbst ist AFAIK nur noch "per Zufall"
verfuegbar, d.h. wenn register_globals=on sind.
Andererseits ist der Inhalt von $_SERVER und $_ENV
dort z.B. so aufgelistet:
PHP Variables
_SERVER['REMOTE_ADDR'] 123.321.123.321
_ENV["HOSTNAME"] server.example.com
_ENV["_"] /usr/local/apache/bin/httpd
u.s.w.
=> Auch hier muss man erstmal wissen, dass man diese
Variablen mit folgender Schreibweise erreicht:
$_SERVER['REMOTE_ADDR']
$_ENV["HOSTNAME"]
$_ENV["_"]
Wenn man das mal weiss, dann ist die phpinfo() sehr nuetzlich. ;-)
Gruesse + einen schoenen Abend,
Thomas
vielen dank. das ging echt schnell und funktioniert auch :D
grüße sven