Von Sessions auf Cookies umsteigen

  • Also nehemen wir an ich habe ein login system, das mit sessions arbeitet.
    Der Nachteil ist nun das ein user nur solange angemeldet ist, solange der server sich sessions merkt - klar oder?

    Ich möchte nun aber ein "remember me" funktion einbauen - mit cookies natürlich. Doch wie kann ich am einfachsten cookies in miene seite einbauen.

    Folgendermaßen sieht der verifizierungs algorithmus aus:

    Nun wie kann ich einfach in meine datein ein cookie einarbeiten, so das ich nicht den gesamten code umschreiben muss?! Kann ich irgendwie cookies und sessions kombinieren?! So auf schreibe in cookie und immer wenn ich session sagen meine ich entweder das cookie oder die session varible, je nachdem?!

    Danke mal für eure antworten!

  • Eine einfache Möglichkeit wäre, speichere User-ID und Passwort einfach verschlüsselt in den Cookies und versuch die Daten dann, falls Cookie vorhanden, aus der Datenbank zu holen. Falls ein Eintrag mit übereinstimmender User-ID + Passwort existiert > Sessionvars deklarieren.

    Angenommen Autologin-Cookie sieht aus wie folgt:
    [autologin] => md5(USER_ID)#md5(USER_PWD)

    Ich setze mal voraus, dass die Passwörter als md5-Hash in der DB stehn

    PHP
    if(!$_SESSION['wasauchimmer'] && $_COOKIE['autologin']) {
    	list($user_id, $user_pwd) = explode("#", $_COOKIE['autologin']);
    	$sql = "SELECT [...] FROM [...]
    			WHERE
    				MD5(uid) = '" . $user_id . "'
    				AND pwd = '" . $user_pwd . "'
    			LIMIT 1";
    	[...]
    }

    ... zum Bleistift.

  • Ok hab das folgendermaßen gelöst:

    Normalerweise wenn das script keine session variable findet leitet es auf index.php zurück -> nun hab ich in index.php eine abfrage eingebaut, die checkt, ob ein cookie gesetzt ist, wenn ja kontrolliert es die daten mit der datenbank und setzt die session variablen erneut -> so muss ich kein anderes script umschreiben, ist zwar nicht die sauberste, aber zweckmäßige lösung.

    Nun ein wort zur sicherheit: hab die cookie varibelen 1,2,3,... benannt. Eine davon ist ein key (eine zufalls md5 checksum) die anderen (user,pass..) sind dann nach dem CHAP prinzip verschlüsselt also:

    PHP
    md5(md5(klartext_password).$key) = $cookie_user

    So garantier eine gewisse unleserlichkeit, da niemand weiß, was der key, password, etc. ist und was sich aus was zusammensetzt.

    Aber was ist nun eine sinnvolle expiring time eines cookies? Ich hab mal 3 monate gesetzt, da sich der cookie nicht refreshed wenn man erneut einloggt?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!