Hallo Jörg.
Wie kann ich denn kontrollieren, dass das Passwort mindestens 6 Zeichen, keine Umlaute und Sonderzeichen und maximal 20 Zeichen enthält?
Die Frage ist, ob so eine Einschränkung wirklich gut ist: die Nutzung von Sonderzeichen erhöht ja die Sicherheit
Die Frage der Umsetzung könnte wohl besser in
diesem Thread besprochen werden
OK, und wenn man bestimmte Zeichen nur sperrt? (z.B. <,>,)
Ich habe gehört, dass Spammer ein Script oder so in ein Formulafeld einfügen können und dann auf der Webseite überall Werbung kommt, oder so. Oder kann man auch nur HTML/PHP-Befehle sperren lassen?
Das Passwort sollte aber nirgendwo in eine Webseite eingebaut werden, sondern idealerweise nur verschlüsselt in der Datenbank gespeichert werden zum späteren Abgleich mit dem verschlüsselten Wert einer erneuten Eingabe. Dementsprechend kann (und sollte) man alle Zeichen zulassen.
OK, kann man dann aber irgendwie einenen Befehl geben, dass das Passwort mindestens 5 Zeichen lang sein muss? Das Feld Passwort kann man ja nicht prüfen, weil es automatisch "geleert" wird und verschlüsselt in "hash" eingetragen wird.
Achso, wenn du das Passwort clientseitig verschlüsselst, musst du die Länge natürlich auch in JavaScript überprüfen. Dazu steht dir die Eigenschaft
length zur Verfügung
OK, der User wurde jetzt erfolgreich in die Datenbank eingetragen und aktiviert.
Jetzt geht es mit dem Login weiter. Das Formular habe ich schon.
Muss ich nur abfragen, ob Username besteht, Passwort zu Username passt und der Account auch aktiviert ist oder muss ich noch etwas anderes beachten?
Und zum "eingeloggt-bleiben". Der Username und das Passwort sollen ja nicht von Seite zu Seite geschickt werden.
Kann man das dann auch so machen(?):
Beim Login wird der Username, die IP-Adresse und Zeit und Datum in der Datenbank gespeichert. In jeder Seite ist ein Script eingebaut, dass prüft, ob die IP-Adresse in der Datenbank vorhanden ist. Wenn ja, dann wird geprüft, wie viel Zeit seit der dazu eingetragenen Zeit vergangen ist. Wenn sich die Zeit in dem gültigen Bereich befindet, wird der Username abgerufen und die dafür benötigten Daten aus den anderen Tabellen abgerufen. Außerdem wird die eingetragene Zeit durch die jetzige Zeit ersetzt.
Frage: Ist das eine sichere Möglichkeit. Oder gibt es da noch andere Möglichkeiten?
IP-Adressen alleine ermöglichen keine sichere Identifizierung. Viele User teilen sich IP-Adressen, weil sie vom selben Netzwerk ins Internet gehen oder gemeinsame Prioxies nutzen. Hierzu gehören beipielsweise auch alle AOL-User.
Besser ist es deswegen, die User über eine Session oder einen Cookie zu identifizieren (wobei eine Session meist auch über einen Cookie läuft)
Und wie funktioniert ein Cookie/Session bzw. wie geht das?
Was nimmst du denn? Was ist der Unterschied?
In PHP kann die integrierte Session-Funktionalität genutzt werden, siehe hierzu das betreffende Kapitel im PHP-Handbuch:
http://de.php.net/session
Über Google findet sich u.a. dieses Tutorial zu diesem Thema:
http://tut.php-q.net/sessions.html