Ergebnis 1 bis 3 von 3

Thema: Session daten selber speichern

  1. #1
    Meister(in)
    Registriert seit
    20.05.2005
    Ort
    Rheinland-Pfalz
    Beiträge
    275
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Session daten selber speichern

    Ich hab mich letztens mal etwas intensiver mit SESSION beschäftigt. Dabei hab ich ein Buch zur Hand genommen, welches mir folgenden Vorschlag machte: Sessiondaten selber speichern.

    In dem Buch ist folgender Script dargelegt:

    Code:
    <?php
    function ms_open&#40;$sesspath, $sessname&#41;
    &#123;
       global $DB;	// Datenbankhandle
       $time = time&#40;&#41;;
       $sessid = session_id&#40;&#41;;
       $query = "SELECT * FROM currentsession
                 WHERE sessionID = '$sessid'";
       $RS = mysql_query&#40;$query, $DB&#41;;
       if &#40;mysql_num_rows&#40;$RS&#41; == 0&#41; &#123;
          $query = "INSERT INTO currentsession
                    &#40;sessionID, laccess&#41;
                    VALUES &#40;'$sessid', '$time'&#41;";
       &#125; else &#123;
          $query = "UPDATE currentsession
                    SET laccess = '$time'
                    WHERE sessionID = '$sessid'";
       &#125;
       $RS = mysql_query&#40;$query, $DB&#41;;
       return $RS;
    &#125;
    function ms_read&#40;$sessid&#41; &#123;
       global $DB;
       $query = "SELECT * FROM currentsession
                 WHERE sessionID='$sessid'";
       $RS = mysql_query&#40;$query, $DB&#41;;
       $arrRS = mysql_fetch_assoc&#40;$RS&#41;;
       if &#40;is_array&#40;$arrRS&#41;&#41; &#123;
          return $arrRS&#91;$variables&#93;;
       &#125; else &#123;
          return FALSE;
       &#125;
    &#125;
    function ms_write&#40;$sessid, $varis&#41; &#123;
       global $DB;
       $query = "UPDATE currentsession
                 SET variables = '$varis'
                 WHERE sessionID = '$sessid'";
       $RS = mysql_query&#40;$query, $DB&#41;;
       return $blnRS;
    &#125;
    function ms_destroy&#40;$sessid&#41; &#123;
       global $DB;
       $query = "DELETE FROM currentsession
                 WHERE sessionID = '$sessid'";
       $RS = mysql_query&#40;$query, $DB&#41;;
       return $RS;
    &#125;
    function ms_gc&#40;$sesslt&#41; &#123;
       global $DB;
       $tStamp = time&#40;&#41; - $sesslt;
       $query = "DELETE FROM currentsession
                 WHERE laccess < '$tStamp'";
       $intRS = mysql_query&#40;$query, $DB&#41;;
       return $intRS;
    &#125;
    function ms_close&#40;&#41; &#123;
    &#125;
    session_module_name&#40;"user"&#41;;
    session_set_save_handler&#40;'ms_open', 'ms_close',
                             'ms_read', 'ms_write',
                             'ms_destroy', 'ms_gc'&#41;;
    session_name&#40;'SESSION'&#41;;
    // Erzeugen Sie folgende Tabelle in der Datenbank&#58;
    /*
    CREATE TABLE currentsession &#40;
       sessionID varchar&#40;32&#41; NOT NULL,
       usrID bigint&#40;20&#41; NOT NULL,
       variables text NOT NULL,
       laccess int&#40;14&#41;,
       PRIMARY KEY &#40;sessionID&#41;,
       KEY usrID &#40;usrID&#41;
    &#41;;
    */
    // Ändern Sie hier die Parameter für die Datenbank
    $DB = mysql_connect&#40;'localhost', 'root', ''&#41;;
    mysql_select_db&#40;'mysessiondb', $DB&#41;;
    session_start&#40;&#41;;
    ?>
    <html>
    	<title>Session</title>
    	<link rel="stylesheet" type="text/css" href="my.css">
    <body>
    <?php
    $sessid = session_id&#40;&#41;;
    echo "Aktuelle Session-ID&#58; $sessid";
    ?>
    </body>
    </html>

    Dazu habe ich jetzt n paar fragen:

    - zum speichern von session sollte man session_register() verwenden. alles ok, aber wie les ich sie wieder aus?
    - wie lösche ich die aktuelle session wieder?
    - beim speichern in die datenbank wird bei einer neuen sitzung (erster aufruf) nur die Spalte laccess mit einem timestamp gefüllt. wieso? beim 2ten aufruf schreibt er dann tatsächlich eine neue reihe mit der sessionid und lacess. ERST beim dritten aufruf werden zusätzliche daten gespeichert. irgendwie komisch :/

    naja..

    Gruß Heinrich S.
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    phpfan
    Gast

    Standard Re: Session daten selber speichern

    Zitat Zitat von yngvar
    zum speichern von session sollte man session_register() verwenden.
    Falsch! Die session*register*-Funktionen sind veraltet! Siehe Doku!
    Zitat Zitat von yngvar
    wie lösche ich die aktuelle session wieder?
    Siehe Doku!

    Das Script scheint mit auch nicht das gelbe vom Ei zu sein, da gibt es bessere Session-Handler

  3. #3
    Meister(in)
    Themenstarter

    Registriert seit
    20.05.2005
    Ort
    Rheinland-Pfalz
    Beiträge
    275
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ja, kann schon sein. Das Buch ist schon etwas älter...

    Hast du vielleicht einen bessren Session Handler parat?

Ähnliche Themen

  1. Fehler im Login Script (Wer klaut mir meine Session-Daten?)
    Von Cpt. Rick im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 10
    Letzter Beitrag: 06.09.2007, 20:57
  2. MySQL Daten mit PHP abfragen und neu speichern
    Von LY654 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 02.09.2007, 15:26
  3. Daten in Datenbank speichern
    Von Webbastlerin im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 17
    Letzter Beitrag: 15.10.2006, 23:06
  4. Problem beim speichern von Daten in MYSql
    Von torsten81 im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 8
    Letzter Beitrag: 14.11.2005, 11:30
  5. Daten aus Session löschen
    Von Rocco im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 15.09.2004, 13:18

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •