sessions -> mach ich das so richtig?
guma
- php
0 Chris0 Sven Rautenberg0 guma
0 Guma
Hallo forumbesucher,
ich versuche gerade mit Sessions umzugehen. das habe ich zusammengetippt:
session_start();
// Wenn eine Session-ID übergeben wurde, dann diese reaktivieren
if (isset ($HTTP_GET_VARS[session_name()])) session_id( ${session_name()} );
if (session_is_registered("kid")) session_register("kid");
if (isset ($HTTP_GET_VARS["kid"])) $kid=$HTTP_GET_VARS["kid"];
session_register("kid");
sieht das sehr verkehrt aus? geht das einfacher?
grüße guma
Hallo Guma,
ich versuche gerade mit Sessions umzugehen. das habe ich zusammengetippt:
session_start();
// Wenn eine Session-ID übergeben wurde, dann diese reaktivieren
if (isset ($HTTP_GET_VARS[session_name()])) session_id( ${session_name()} );
if (session_is_registered("kid")) session_register("kid");
Es geht also einfacher ;-))
LG
Chris
Moin!
ich versuche gerade mit Sessions umzugehen. das habe ich zusammengetippt:
Da ist _etliches_ zu verbessern!
> session_start();
> // Wenn eine Session-ID übergeben wurde, dann diese reaktivieren
// Das kommt im Ablauf des Skriptes zu spät! Die Session-ID kannst du nur _VOR_ session_start() setzen. Außerdem sucht sich session_start() von ganz allein die übergebene Session-ID, man muß in der Regel nicht eingreifen.
> if (isset ($HTTP_GET_VARS[session_name()])) session_id( ${session_name()} );
// Dein ID-Setz-Versuch ist überdies grausam und verläßt sich auf register_globals=on, obwohl du eigentlich ja versuchst, dich darauf nicht zu verlassen.
// Im übrigen sind die Variablen $HTTP_*_VARS allesamt veraltet, nutze $_* (also hier: $_GET).
> if (session_is_registered("kid")) session_register("kid");
// Verwende session_register() (und dementsprechend auch session_is_registered() ) nicht, das benötigt nämlich register_globals=on.
// Nutze stattdessen das Array $_SESSION zum Speichern von Werten. Betrachte es als ein ganz normales Array, dessen Inhalte aber am Skriptende gespeichert und nach session_start() wiederhergestellt werden.
> if (isset ($HTTP_GET_VARS["kid"])) $kid=$HTTP_GET_VARS["kid"];
// Es ist nicht unbedingt sinnvoll, Variablen aus $_GET nochmal extra in neue Variablen zu kopieren.
> session_register("kid");
// Siehe oben: Wenn ein Wert gespeichert werden soll, lege ihn in $_SESSION ab:
$_SESSION['kid-wert'] = $_GET['kid'];
// Der Array-Schlüssel kann dabei auch ganz anders heißen, es besteht also keine Verpflichtung, ihn zwingend gleichlautend wie die eigentliche Variable zu benennen.
Im Grunde genommen kannst du deinen ganzen Code zusammenkürzen auf:
session_start();
und die Verwendung von $_SESSION und $_GET, $_POST (für Formularwerte).
- Sven Rautenberg
danke ich versuchs mal so wie hier beschrieben...
guma
guten abend,
hier speichere ich eine session:
_________________________________________
session_start();
$_SESSION['kidkat'] = $kid;
_________________________________________
Hier übergebe ich sie und gebe sie aus:
_________________________________________
$kidkat = $_SESSION['kidkat'];
echo "$kidkat";
_________________________________________
funktioniert soweit ich weiss...!
Frage: ist das bis hier OK? ist meine session jetzt auf dem server gespeichert?
weiter unten lade ich dann folgendes file mit ein:
require_once("link.php");
_________________________________________
si sieht das file aus --> link.php:
<? echo "$kidkat"; //hier wird leider nichts ausgegeben!!>
_________________________________________
Warum wird unten nichts ausgegeben ober gehts doch auch. Was kann ich tun?
Guma
Moin!
session_start();
$_SESSION['kidkat'] = $kid;
Frage: Woher kommt $kid, und was steht drin?
$kidkat = $_SESSION['kidkat'];
echo "$kidkat";
Das geht auch schöner und einfacher:
echo $_SESSION['kidkat'];
funktioniert soweit ich weiss...!
Das bedeutet, es wird was ausgegeben? Auch wenn du in einer ganz anderen Seite das hier schreibst:
session_start();
echo $_SESSION['kidkat'];
Frage: ist das bis hier OK? ist meine session jetzt auf dem server gespeichert?
Wenn der Wert aus $kid wieder ausgegeben wird, ist das OK.
weiter unten lade ich dann folgendes file mit ein:
require_once("link.php");
Das ist nicht falsch.
si sieht das file aus --> link.php:
<? echo "$kidkat"; //hier wird leider nichts ausgegeben!!>
Wenn das nicht geht, wird irgendwas falsch sein, oder du machst doch mehr, als du hier schreibst.
- Sven Rautenberg