Matthias: Session auslesen

Hi Forener,

hab ein Problem mit der Auslesung von einer Session, aber dieses Problem existiert erst seitdem ich auf Version 4.3.3 aufgestockt habe.

Ich speichere nach einem Login-Skript die Variable $user

session_start();
$user = $_POST['user'];
session_register("user");

in der darauffolgenden PHP file möchte ich den User namentlich begrüssen und lese die Session folgendermaßen aus.

session_start ();
if (session_is_registered ("user")) {
$username = $_SESSION['user'];
echo $username;

in meiner alten PHP Version hats noch gefunkt, seit Version 4.3.3 funkt es nimmer,

hat 4.3.3 da einen Bug oder is doch was am Code falsch

Help Please

  1. Hallo,

    hier so habe ich es gemacht:

    Username gibt man ins Formular ein:

    <?
    ....
    session_register('zaehler');
    $zaehler = $_POST["username"];
    ...
    ?>

    So ruft man es wieder ab:

    <?
    ....
    if(session_is_registered('zaehler')) {

    echo "Hallo $zaehler";
    }
    ...
    ?>

    Bei mir (mit 4.3.2 (oder 4.3.1)) geht  das ohne probs

    P.S Besuche meine Site ;)

    MFG
    Andavos

  2. Hallo Matthias,

    session_start();
    $user = $_POST['user'];
    session_register("user");

    <zitat src="http://de.php.net/session_register">
    Achtung
    [...] Wenn Sie in Ihrem Script session_register() verwenden, funktioniert es nicht in Umgebungen, in denen die PHP-Anweisung register_globals deaktiviert ist.
    </zitat>
    da register_globals in Versionen ab 4.2 (afaik) standardmäßig auf off ist, wird das wohl bei dir auch so sein - du musst also $_SESSION['user'] verwenden.

    in meiner alten PHP Version hats noch gefunkt, seit Version 4.3.3 funkt es nimmer,

    welche Version hattest du vorher?

    hat 4.3.3 da einen Bug oder is doch was am Code falsch

    letzteres :-)

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Moin!

      session_register("user");
      <zitat src="http://de.php.net/session_register">
      Achtung
      [...] Wenn Sie in Ihrem Script session_register() verwenden, funktioniert es nicht in Umgebungen, in denen die PHP-Anweisung register_globals deaktiviert ist.
      </zitat>
      da register_globals in Versionen ab 4.2 (afaik) standardmäßig auf off ist, wird das wohl bei dir auch so sein - du musst also $_SESSION['user'] verwenden.

      Zur Verwendung von $_SESSION noch eine Verständnisanmerkung:

      Das Array $_SESSION ist eine Variable, die auf jeder Seite der Session existiert und mit dem zuletzt zugewiesenen Inhalt aufgefüllt wird, sobald session_start() aufgerufen wurde.

      session_start() füllt dieses Array mit den gespeicherten Session-Daten. Danach kann man mit dem Array alle möglichen Operationen anstellen, also jegliche Daten speichern, löschen oder ändern. Am Skriptende wird er dann erreichte Zustand des Arrays wieder gespeichert.

      $_SESSION ist also ein dauerhaftes Array. Es ist unnötig, die Inhalte des Arrays am Skriptbeginn einer anderen Variablen zuzuweisen, und die geänderte Variable am Skriptende wieder dem Array zuzuweisen - man kann auch direkt mit dem Array arbeiten. Außerdem ist man in der Wahl der Array-Indexwerte vollkommen frei, sie müssen in keiner Weise mit irgendwelchen Variablennamen, die gespeichert werden sollen, übereinstimmen.

      Außerdem ist es problemlos möglich, dieses Array auch mehrdimensional zu machen.

      $_SESSION['auth']['username']=$_POST['username'];
      $_SESSION['warenkorb'][1]=...

      - Sven Rautenberg

      --
      ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|