guma: sessions -> mach ich das so richtig?

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

  1. Hallo Guma,

    ich versuche gerade mit Sessions umzugehen. das habe ich zusammengetippt:

    session_start();
    // Wenn eine Session-ID übergeben wurde, dann diese reaktivieren

    das macht PHP beim session_start() automatisch!

    if (isset ($HTTP_GET_VARS[session_name()])) session_id( ${session_name()} );

    $HTTP_?_VARS nicht mehr benutzen für PHP >= 4.0.3

    sondern $_GET, $_POST, ...

    if (session_is_registered("kid")) session_register("kid");

    Hier benutzt man $_SESSION[<varname>] als ganz normales Array.

    Beim Session_Start() wird das Array angelegt und geladen

    beim Scriptende oder -abbruch wird es automatisch gespeichert.

    Es geht also einfacher ;-))

    LG
    Chris

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

    --
    My sssignature, my preciousssss!
    1. danke ich versuchs mal so wie hier beschrieben...
      guma

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

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

      --
      My sssignature, my preciousssss!