1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Von Sessions auf Cookies umsteigen

  • Myc0rrhizal
  • 8. November 2006 um 01:31
  • Unerledigt
  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 8. November 2006 um 01:31
    • #1

    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:

    PHP
    session_start();
    
        //erkennt ob eine session gekidnapt wurde
        if (isset($_SESSION['c_ip'])) {
                if (@$_SESSION['c_ip'] != $_SERVER['REMOTE_ADDR']) {
                $_SESSION['c_auth'] = "no";
            }
        }
        //wenn man nicht berechtigt ist, wird man auf index zurückgeschickt
        if (@$_SESSION['c_auth'] != "yes") {
                header('Location: ../index.php');    
        }
    Alles anzeigen

    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!

  • Marky
    6
    Marky
    Mitglied
    Punkte
    310
    Beiträge
    59
    • 8. November 2006 um 14:04
    • #2

    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.

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 8. November 2006 um 20:08
    • #3

    Danke, werd mir das heute mal anschaun!

  • Simon
    5
    Simon
    Mitglied
    Reaktionen
    1
    Punkte
    211
    Beiträge
    42
    • 9. November 2006 um 10:08
    • #4

    Ich würde statt dem Passwort eine Checksum (mit MD5 oder SHA1 verschlüsselt), die beim letzten Login generiert wurde, in den Cookie speichern.

    PokerStrategy - Pokercommunity + 150$ geschenkt!

  • Myc0rrhizal
    1
    Myc0rrhizal
    Gast
    • 14. November 2006 um 13:33
    • #5

    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?

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung