Session
Tobias
- php
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
$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.
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