sven: umgebungsvariable ausgeben

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

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

    --
    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!
  2. Hallo,

    <?PHP
    $ip = getenv("REMOTE_ADDR");
    echo $ip;
    ?>

    MFG
    Andavos

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
  3. 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®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. 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!
      1. 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®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
        1. 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

  4. vielen dank. das ging echt schnell und funktioniert auch :D
    grüße sven