Ankündigung

Einklappen
Keine Ankündigung bisher.

Eingeloggt bleiben mit Hifle von Cookies?

Einklappen

Neue Werbung 2019

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

  • Eingeloggt bleiben mit Hifle von Cookies?

    Hallo,
    ich würde gerne nutzern Möglichkeit geben, eingeloggt zu bleiben. Ich habe noch keine Erfahrung damit und daher war meine Idee wie folgt:

    Es wird eine Session erzeugt:
    PHP-Code:
    <?php
    session_start
    ();
    $mail$_SESSION["mail"];
    ?>
    Dann wird ein Cookie erstellt, der die Session speichert. Das müsste dann wohl wie folgt aussehen:
    PHP-Code:
    setcookie("mailcookie",$mail,time()+(3600*24*100)); 
    oder
    PHP-Code:
    setcookie("mailcookie",$_SESSION["mail"],time()+(3600*24*100)); 
    Würde das so klappen und man so eingeloggt bleiben oder gibt es da probleme und sicherheitsmängel? Es kann auch sein, dass mein Lösungsvorschlag vollkommen fehlerhaft ist. Ich weiß nur durch meine Recherche, dass Cookies die Möglichkeit bieten.

    Edit:
    Oder geht es auch, indem man die Session so lang setzt, dass er fast ewig eingeloggt bleibt:
    PHP-Code:
    session_cache_expire(525600); // (60*24*365) für ein Jahr 

  • #2
    Zitat von Extremefall Beitrag anzeigen
    Dann wird ein Cookie erstellt, der die Session speichert.
    Nein, nie!
    • Das was in der Session steht, hast du selbst dort hineingeschrieben. Es ist also vertrauenswürdig.
    • Das was im Cookie steht, hat der Browser des Benutzers an dich übertragen. Du darfst nie davon ausgehen, das im Cookie das steht, was du mittels setcookie vorgeschlagen hast.


    Eingeloggt bleiben heißt einfach: der Session Timeout ist sehr hoch eingestellt. Nicht mehr und nicht weniger.
    Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

    Kommentar


    • #3
      Falls du den User wirklich dauerhaft eingeloggt halten willst, dann musst du zwangsläufig auf Cookies zurückgreifen (zumindest fällt mir gerade nichts anderes ein).

      Die Session ist nur so lange "da" wie du deinen Browser nicht schließt (zumindest bei Firefox), falls du ihn schließt wird diese gelöscht und der User muss sich neu einloggen.

      Falls du Probleme mit der Funktion zum erstellen der Cookies hast empfehle ich dir zu aller erst diese Seite: PHP: setcookie - Manual. Da findest du auch Erklärungen zu allen anderen Funktionen von PHP und schonmal auch hilfreiche Tipps in den Kommentaren

      Kommentar


      • #4
        Bedeutet das, dass ich einfach die Session Dauer erhöhen sollte? Ist es also nur gemeint, falls man nichts tut, dass man trotzdem eingeloggt bleibt? Also wird die Session beim schliesen des Browsers geschlossen?

        Kommentar


        • #5
          die session wird beendet, wenn die session-zeit abgelaufen ist, richtig, - auch wenn kein request innerhalb der zeit erfolgte (also "nix tun" ) aber wenn du den benutzer auch nach dem browser-schliessen erkennen willst, muss er cookies akzeptieren - wie oben bereits genannt, siehe im manual nach setcookie.

          Kommentar


          • #6
            Ich empfehle dir aber auch keine persönlichen #Daten eines Users in das Cookie zu schreiben, ich schreibe da nur die Session ID rein die beim Login vergeben war und schreibe diese auch in ein Datenbank feld rein. Natürlich vergebe ich nach dem Login eine neue Session ID aber das ist ja bei einem Auto Login egal. So wenn der User nun seinen Browser schliest ist der Cookie mit der Session ID gespeichert und wenn er meine Seite wieder aufruft habe ich dann eine andere Login Routine die prüft ob das Cookie existiert und der Cookiewert auch in der DB steht und vollziehe somit einen Autologin.

            Ich hoffe die kleine Erklärung hilft dir weiter.

            Gruß litter
            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
            [URL]http://www.lit-web.de[/URL]

            Kommentar


            • #7
              Wenn ich dich richtig verstanden habe, soll ich eine Session mittels id erstellen

              Also z.B. so:
              PHP-Code:
              <?php
              session_start
              ();
              $_SESSION["id"] = $id// am besten mit uniqueid etc. (vielleicht auch noch einen md5 hash)
              ?>
              Die erzeugte id ($id) wird dann in die Datenbank bei dem User z.B. in die Spalte "session" eingetragen.

              dann wird ein Cookie mit der Sessionid erzeugt, also ohne pers. Daten:
              PHP-Code:
              setcookie("sessionid",$_SESSION["id"],time()+(3600*24*100)); 
              Und jedesmal beim Aufruf der Seite wird die Sessionid aus der Datenbank aufgerufen und dann mit dem Cookie verglichen.

              Also z.B.:
              PHP-Code:
              if ($_COOKIE['sessionid'] != $datenbanksessionwert){
              echo 
              "Fehlermeldung: Session inaktiv";
              }
              else {
              Seite anzeigen

              Wäre das so eine gute Möglichkeit? Hast du es so gemeint? Oder wäre das so falsch?

              Kommentar


              • #8
                die session id ändert sich bei jedem neuem login.. in der db solltest du den selben wert speichern, den du im cookie setzt (mittels setcookie).. eine session id brauchst du auch nicht erstellen, das geschieht automatisch. dann einfach prüfen ob der cookie-eintrag aus der db in $_COOKIE vorhanden ist. (kann die session id sein, damit du weisst das er schonmal da war, das muss du entscheiden, je nach anwendung)

                um zu sehen was im array enthalten ist und dir einen besseren überblick gibt, setze setcookie und lasse dir $_COOKIE mit var_dump/printr ausgeben...

                cookies und sessions unterscheiden sich, lösche auch mal deine browser-daten (Cookies etc) dann siehst du, dass jeder auch seine cookies löschen oder ändern kann, also achte auf ausreichende validierung!


                siehe [MAN]session_id[/MAN]

                Kommentar

                Lädt...
                X