2010-05-23 8 views
5

Ich habe derzeit eine Website, die es meinen Besuchern ermöglicht, sich über ein einfaches Skript anzumelden, das ich zusammengefügt und geschrieben habe. Momentan benutze ich nur Sitzungen, um Besucher eingeloggt zu halten. Gibt es irgendwelche Vorteile, Cookies auf meiner Webseite hinzuzufügen, um den eingeloggten Benutzerstatus zu speichern?Sessions und Cookies

Oder gibt es insgesamt einen besseren Weg?

mit PHP

+0

Ich denke, es gibt keinen anderen Weg ... Wenn Sie den Benutzer angemeldet Status speichern möchten, müssen Sie Cookies verwenden. – Cristian

+0

@Cristian: Nein .... du * musst * nicht, aber die andere Lösung ist ziemlich hässlich. (Pass es in der URL) – mpen

Antwort

3

@Ramiro Gonzalez Maciel er sagte, er hat dieses Skript gemacht, er braucht keine Frameworks als Beispiele zu nehmen. Frameworks haben normalerweise Skripts, die eingepackt und gut platziert sind.

Um diese Frage zu antworten:

speichere ich in der Regel in Cookie einige md5 Strings, die von seinem md5 (Passwort) und seinen Benutzernamen kombiniert werden, so werde ich nächste tim weiß, dass er meine Website eingibt, der in so protokolliert wurde, ich würde ihn nicht wieder machen einloggen

mein Beispiel:

<?php 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    // sql and escape stuff witch will return 1 if he has entered a valid login 
    if($sqlreturn == 1){ 
     // do login 
     $wraplogin = md5($username."-".md5($password)."-".SECRET_KEY); // I always define a define('SECRET_KEY', 'mysecretkey'); in global file. 
     // now you can store that $wraplogin in cookies and remember his login. Next time he enters the website, you read that cookie, compare it with what you have in your database and let him in. 
    } 
?>

Jetzt weiß ich, das ist nicht das beste Beispiel, aber ich habe persönlich benutzte es, in sehr großen Websites (> 500.000 Nutzer) und keine hat noch gehackt :)

Das ist der Vorteil in Cookies für den Login-Teil.

Viel Glück.

+0

Irgendwelche echte Notwendigkeit, das Passwort in den md5-Hash zu setzen? Ich denke ein anderes zufälliges Stück von Daten, der Zeitstempel der Benutzerregistrierung vielleicht, wäre besser. Ich weiß, dass eine lange Saite niemals brutal sein könnte, sondern nur um auf der paranoiden sicheren Seite zu sein. Übrigens habe ich den Vorteil von Cookies herausgefunden, dass Sie festlegen können, dass der Benutzer für XX Tage angemeldet bleibt. – Derek

+0

ja, hauptsächlich können Sie alles in diesem Login-Cookie, Benutzer-IP usw. einrichten. Ich habe das Passwort hinzugefügt, um diese Zeichenfolge ein wenig komplexer zu machen, aber wie ich schon sagte, Sie können alles :) alles, was verifiziert werden kann später. –

4

Wenn Sie PHP-Sitzungen verwenden, verwenden Sie Cookies. PHP speichert die Sitzungs-ID in Cookies und die Sitzungsdaten in einer Datei auf der Festplatte Ihres Webservers.

1

Die Web-Frameworks (Java Servlets und andere) verwenden normalerweise Cookies, um Sitzungen zu identifizieren. Die andere übliche Option sind URL-Parameter. Wenn Sie also ein Web-Framework verwenden, verwendet es wahrscheinlich bereits Cookies, um die Sitzungs-ID zu speichern. Das Web Framework verwendet diese ID, um das Sitzungsobjekt in jeder Anforderung zu identifizieren. Obwohl Cookies Server-Neustarts überleben, da sie im Browser gespeichert sind, werden Sitzungsobjekte normalerweise nicht angezeigt, es sei denn, Sie haben Sitzungspersistenz konfiguriert.

Wenn Sie möchten, dass Benutzer sich automatisch anmelden, wie in der üblichen "remember mir" -Option, die viele Websites implementieren, müssten Sie Sitzungsobjekte persistieren, wenn Ihr Framework das bietet. Oder implementieren Sie ein ähnliches System, indem Sie Cookies zum Speichern eines "eingeloggten Tokens" verwenden und dieses Token überprüfen, wenn der Benutzer auf das System zugreift, um sie automatisch zu protokollieren oder an eine Anmeldeseite zu senden. (Bearbeiten: wie Mihai in anderer Antwort vorschlägt)

Wenn Sie Ihre eigene Methode implementieren möchten, empfehle ich zu überprüfen, wie die populären Web-Frameworks dies implementieren, insbesondere die Sicherheits- und Datenschutzaspekte der Speicherung von Benutzerdaten in Cookies.