Session-Cookies und deren Gültigkeit

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

  • Session-Cookies und deren Gültigkeit

    *seufz*
    Hallo Leute ~> ich habe hier ja schon eine lange Weile nichts mehr rein geschrieben, aber jetzt brauche ich wirklich Hilfe (wird wohl ein längerger Beitrag):

    Ich betreibe ein Forum (phpBB 2.0.4) für meine Berufsschulklasse (an alle die es nicht wissen: Ausbildung zum Fachinformatiker).
    Jetzt habe ich mir in PHP einen schönen Kalender gebastelt, der eigentlich und sozusagen nahtlos ins Forum integriert werden soll. Ruft man den Kalender zum ersten Mal auf, soll man sich mit den selben Benutzerdaten anmelden wie im Forum. Soweit klappt es auch, die Informationen werden aus der Foren-DB abgerufen, Passwort md5-verschlüsselt und abgeglichen. Sprich: Anmeldung ist bereits okay und fertig.

    Mein Problem ist jedoch folgendes ~>
    Der Benutzer soll genau 2 Möglichkeiten haben:
    1. Anmelden mit Session-Cookie, was 1 Monat lang gültig sein soll und
    2. Anmelden ohne Session-Cookie. D.h. es wird eines angelegt aber beim schliessen des Browsers zerfällt dieses Cookie wieder.

    Hier folgt der Code, wie ich bewerkstellige, dass man das Cookie entweder dauerhaft macht oder es eben kein Ablaufdatum erhält:

    PHP-Code:
    <? if (isset($_POST['autologin'])) // Wenn man sich mit Cookie anmelden möchte
    {
       $ablaufdatum = 60 * 60 * 24 * 30; // 1 Monat
       session_set_cookie_params($ablaufdatum);
       session_name("IA12-Kalender");
       session_start();
       $_SESSION['benutzer'] = $anmeldungsbenutzer;
       $_SESSION['passwort'] = $anmeldungspasswort;
       if ((isset($_SESSION['benutzer'])) AND (isset($_SESSION['passwort'])))
       {
          echo "Anmeldung erfolgreich!";
       }
       else
       {
          echo "Es ist ein Fehler aufgetreten! Die Session-Variable konnte nicht gesetzt werden!";
       }
    }
    else // Wenn man sich nur für diese Session anmeldet werden keine Cookies geschrieben
    {
       session_name("IA12-Kalender");
       session_start();
       // void session_set_cookie_params ( int Lebensdauer [, string Pfad [, string Domain [, bool secure]]])
       $ablaufdatum = ""; // 0 Sekunden
       session_set_cookie_params($ablaufdatum);

       $_SESSION['benutzer'] = $anmeldungsbenutzer;
       $_SESSION['passwort'] = $anmeldungspasswort;
       if ((isset($_SESSION['benutzer'])) AND (isset($_SESSION['passwort'])))
       {
           echo "Anmeldung erfolgreich! Bla!";
       }
       else
       {
          echo "Es ist ein Fehler aufgetreten! Die Session-Variable konnte nicht gesetzt werden!";
       }
    } ?>

    Wir Ihr seht, benutze ich die Funktion "session_set_cookie_params()" zum festlegen der Gültigkeitsdauer, hier auf 30 Tage gesetzt wenn man das Häkchen bei "autologin" setzt.

    Weiter unten überprüft er nun ob die Session-Variablen existieren und man angemeldet ist, damit man gleich das Kalenderblatt aufrufen kann, ohne dass man sich neu anmelden muss:

    PHP-Code:
    <? session_name("IA12-Kalender");
    session_start();

    if ((isset($_SESSION['benutzer'])) AND (isset($_SESSION['passwort'])))
    {
       require_once("kalender.php"); // Einbinden des Kalenderblattes
    }
    else
    {
       header("Location: $aktueller_pfad?aktion=login");
    } ?>

    Entscheide ich mich für das Einloggen ohne Cookie, schreibt er meist keines. Aber immer noch nicht nie! Er legt natürlich zur Laufzeit eines an, manchmal aber mit Gültigkeitsdauer von 30 Tagen, die ich doch garnicht an dieser Stelle festgelegt haben kann.
    Andersherum, wenn ich das Häkchen setze und eingeloggt bleiben will, zerfällt es nach der Session gleich wieder!

    Auf Anfrage kann ich noch genauer darauf eingehen, ich verzweifele aber langsam! Ich habe gestern knappe 10 Stunden daran gesessen und brauche wirklich Hilfe!
    Ich wäre Euch wirklich sehr, sehr dankbar!!!

  • #2
    Re: Session-Cookies und deren Gültigkeit

    ich vermute mal, dass bereits ein (dauerhaftes) cookie für die session existiert, und es nicht überschrieben wird in dem fall, dass nur der temporäre login ausgewählt wird.

    wenn zu dem zeitpunkt, wo du session_set_cookie_params(), die session bereits gestartet wurde, wird vermutlich gar kein neues cookie gesetzt ...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Noch immer keine Idee?

      EDIT: Bevor ich die Seite aufrufe, lösche ich immer zum Test alle evtl. gesetzten Cookies.
      Browser: Firebird

      Was passiert:

      1. Ich rufe die Seite auf und werde umgeleitet zur ...
      2. ... Prüfung, ob die Session-Variablen gesetzt sind (in jedem Fall wird vorher ein erneutes "session_start()" aufgerufen, weil die Dokumentation sagt, dass man sonst nicht auf die Existenz von Session-Variablen überprüfen kann
      3. Jetzt werde ich zum Login-Script umgeleitet.
      Ein Cookie (zerfällt am Ende der Session) wurde angelegt, dadurch dass ich im Schritt vorher das "session_start()" aufrufen musste. Jetzt melde ich mich an, wahlweise mit dem Haken bei "autologin" oder nicht.
      4. Angemeldet > ob ich jetzt ein Cookie setzen wollte oder nicht, hier an dieser Stelle hat das Session-Cookie noch immer kein expiry-Date. Was ja zumindest dann falsch ist, wenn ich das eigentlich speichern lassen wollte.

      Kann mir denn jemand sagen, wie man das vielleicht anders lösen kann?
      Ob ich nun angemeldet bleiben will oder nicht, der einzige Unterschied soll im "Expiry"-Teil dieser Funktion "session_set_cookie_params()" festgelegt werden ...
      Any ideas?

      Kommentar

      Lädt...
      X