Tobias: Session

Hallo,
Ich hab versucht ne session zu erstellen. Die Quellen.

index.php:
<form method="GET" action="main.php">
<p><input type="text" name="name" size="20"></p>
<p><input type="submit" value="Abschicken" name="B1"><input type="reset" value="Zurücksetzen" name="B2"></p>
</form>
--------------------------------

main.php:
<?php
$HTTP_SESSION_VARS[session_cache_limiter('public')];
$HTTP_SESSION_VARS[session_start];
$HTTP_SESSION_VARS[session_register('name')];

?>
<p>Im Formular wurde <b><?php echo $name ?></b> eingegeben!!</p>
<p><a href="main2.php">nächste Ebene</a></p>
-----------------------------------

main2.php:
<?php
$HTTP_SESSION_VARS[session_cache_limiter('public')];
$HTTP_SESSION_VARS[session_start];

?>
<p>PAGE2:------>Im Formular wurde <b><?php echo $HTTP_SESSION_VARS["name"] ?></b> eingegeben!!</p>
<p><a href="main3.php">Logout</a></p>
-------------------------------------

Bei main.php wird der Name noch angezeigt. Vermute jedoch dass er die GET-Variable nimmt. Bei main2 kommt "name" dann nicht mehr an!

Wo liegt der Fehler???

Danke im Vorraus.

Tobias

  1. $HTTP_SESSION_VARS[session_start];
    Was ist das? Ich glaube, die Funktion dazu heißt
    session_start();
    Dann erst kann man auf $HTTP_SESSION_VARS[]
    zugreifen.

  2. Hallo Tobias,

    main.php:
    <?php
    $HTTP_SESSION_VARS[session_cache_limiter('public')];
    $HTTP_SESSION_VARS[session_start];
    $HTTP_SESSION_VARS[session_register('name')];

    $HTTP_SESSION_VARS ist lediglich ein array mit den Session Variablen. Dein code ist also (leider) etwas falsch :)

    Als erstes solltest Du die session starten, indem Du

    session_cache_limiter('public');
    session_start();

    aufrufst.

    Dannach kannst Du die Variable "name" einfach zu den $HTTP_SESSION_VARS (bzw. $_SESSION) hinzufügen:
    (Im PHP-Manual steht explizit, dass man bei Verwendung von $HTTP_SESSION_VARS bzw. $_SESSION die Funktionen session_register(),  session_is_registered() und session_unregister() *nicht* verwenden soll. Siehe: http://www.php.net/manual/en/function.session-register.php)

    $_SESSION["name"] = $_GET["name"];

    Vielleicht könntest/solltest Du vorher noch prüfen, ob $_GET["name"] überhaupt einen gültigen Namen enthält und evtl. irgendwelche Sonderzeichen, etc... rausfiltern.

    Somit hast Du jetzt die Variable $name in den Session Variablen stehen. Jetzt weiter zu main2.php...

    main2.php:
    <?php
    $HTTP_SESSION_VARS[session_cache_limiter('public')];
    $HTTP_SESSION_VARS[session_start];
    ?>

    Das hier ist - wie oben schon gesagt - falsch und müsste so heissen:

    <?php

    session_cache_limiter('public');
    session_start();

    ?>

    <p>PAGE2:------>Im Formular wurde <b><?php echo $HTTP_SESSION_VARS["name"] ?></b> eingegeben!!</p>
    <p><a href="main3.php">Logout</a></p>

    Das passt soweit und der Name sollte auch angezeigt werden.

    In main3 (logout) musst Du dann noch die vorhandenen Session Variablen löschen und die Session beenden:

    <?php

    $_SESSION = array();
    session_destroy();

    ?>

    siehe auch:
    http://www.php.net/manual/en/ref.session.php
    http://www.php.net/manual/en/function.session-start.php
    http://www.php.net/manual/en/function.session-destroy.php

    Ich hoffe, ich konnte Dir ein bischen weiterhelfen :)

    Gruß,
    dimde