Session läuft nicht aus - Aber warum?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Session läuft nicht aus - Aber warum?

    Jo also erstmal Hallo ihr alle, ich bin neu hier in dem Forum und das is mein erster Eintrag, und auch gleich eine Frage

    Undzwar, habe ich ein Problem mit Sessions, es sieht irgendwie start danach aus, als würden meine nicht auslaufen (expiren) kA wie man das richtig nennen soll... ich poste einfach mal ein paar snippeds aus meinem Code.. moment *kram*

    Ach was solls ich geb euch die ganze Datei =)

    PHP-Code:
    <?php
      
    require("bin/all.php");

      
    session_cache_expire(1);
      
    $expiry session_cache_expire();

      
    session_start();

      
    head();

      if (isset(
    $_SESSION['nick'])) {

        
    $lastonstring getDateAndTimeAsString($laston);

        
    debInf("Alle Variablen OK");

        echo 
    "Hallo $nick!
              <br />Sie sind eingeloggt!
              <br /><br /><br />"
    ;

        if (
    $laston 0) {
          echo 
    "Ihr letzter Login war: $lastonstring";
        }
        else {
          echo 
    "Dies ist ihr <b>erster</b> Login!";
        }

        
    // Mit Datenbank verbinden
        
    if (mysql_connect($db_host$db_user$db_pass)) {
          
    debInf("DB Verbindung OK");
          
    mysql_select_db($db_name);
          
    debInf("DB Auswahl OK");

          
    $result mysql_query("SELECT nick, laston FROM accounts;");
          
    debInf("Query OK");
          while (
    $arr mysql_fetch_array($result)) {
            if (
    strtoupper($arr['nick']) == strtoupper($nick)) {
              
    // frag sich ma einer was ich hier machen will
            
    }
          }

          
    $diff timeToHMS(time() - $laston);

          echo 
    "<br />Das ist jetzt $diff Her.";

          
    // Sessionexpiry festsetzen

          
    echo "<br />Ihre Session ist noch $expiry Minuten g&uuml;ltig.";

          
    // Datenbankverbindung trennen
          
    mysql_close();
        }
        else {
          
    debErr("Keine Verbindung zur DB");
          echo 
    "Fehler! Datenbankverbindung konnte nicht hergestellt werden!
                <br />Bitte kontaktieren Sie den Systemadministrator"
    ;
        }
      }
      else {
        
    debErr("Benutzer nicht eingeloggt");
        echo 
    "Fehler! Sie m&uuml;ssen sich zuerst einloggen.";
      }

      
    foot();
    ?>
    So... das mit dem Login und alles funktoiniert auch, also wenn man sich nich übern Formular eingeloggt hat dann meckert der undso... ansonsten gehts - das is alles OK. Mein Problem is jez: Wie ihr seht hab ich die Session-Expiry sozusagen auf eine Minute gesetzt. Wenn ich mich aber einlogge, eine Minute warte (bzw. etwas mehr) und dann einen Refresh mache, dann bin ich immernoch eingeloggt, obwohl dann ja eigentlich die "Sie müssen sich erst einloggen"-Nachricht erscheinen sollte.

    Ich bin relativ neu in PHP und weiß nich genau wodran das liegt, daher wäre ich euch uendlich dankbar, wenn mir jemand dabei helfen könnte! Also dann danke schonmal! Ich werd noch bisschen im Forum rumschnuppern.

    Tschüss!



    P.S.: Achja: Ich benutze IE 6 - kA ob das wichtig is?!
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

  • #2
    Moin,

    also die TTL einer Session kannst Du nur im Zusammenspiel der Funktion session_cache_limiter ändern. Du musst die genannte Funktion vor dem ändern des Caches aufrufen und ihr einen Wert übergeben, z.B. private (siehe Bsp.).
    PHP-Code:
    //Auszug aus dem Manual:
    /* setzen der Cacheverwaltung auf 'private' */

    session_cache_limiter('private');
    $cache_limiter session_cache_limiter();

    /* setzen der Cache-Verfallszeit auf 30 Minuten */
    session_cache_expire(30);
    $cache_expire session_cache_expire();

    /* starten der Session */

    session_start(); 

    Kommentar


    • #3
      Hmmm, also irgendwie is das komisch. Ich habe, bevor ich hier gepostet hab, auch schon sowas in der Manual gelesen, und dabei is mir die Funktion auch unter die Augen gekommen, aber in der Beschreibung steht nur irgendwas von Proxies und Client oder nur eins von beiden, und ich wusste nich was das mit dem auslaufen zu tun haben sollte. Kann mir das mal einer erklären bitte?

      Achja, ich habs jez wie folgt geändert:

      PHP-Code:
      <?php
        
      require("bin/all.php");

        
      session_cache_limiter('private');

        
      session_cache_expire(1);
        
      $expiry session_cache_expire();

        
      session_start();

        
      head();
      und den Rest so gelassen, aber jetzt funktoiniert der login überhaupt nicht mehr, bzw. er behauptet immer ich hätte mich nicht eingeloggt - was mach ichn falsch?

      Danke für die Schnelle Hilfe und ich hoffe auf noch mehr!
      Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

      Kommentar

      Lädt...
      X