Zitat:
Besten Dank aber irgendwie bringt mich das kein bischen weiter oder es ist einfach zu viel was ich net versteh.
Ob das jetzt mit Cookies arbeite oder nicht, ist eigentlich egal, hauptsache es fonkioniert. Es muss die session in na db speichern so das man sich nicht immer wieder neu einloggen muss
Ich hätte da eine PHP-Klasse (Objektorientierte Programmierung), aber das ist wahrscheinlich viel zu kompliziert.
Daher will ich vielmehr die Theorie angehen:
Damit ein Benutzer eingeloggt bleiben kann, lege ich die Datenbank folgendermaßen an:
Code
Das Auto-Login-Password ist eine ID, die später zusammen mit dem Nutzernamen in einem Cookie aufbewahrt wird, um das richtige Passwort auch bei Cookie-Diebstählen geheim zu halten. Bei jedem Login (auch bei Auto-Logins) ändert sich das Auto-Login-Passwort.
[h1]Normaler Login über Formular[/h1]
Du brauchst nun eine Funktion, die eine Session für den Nutzer anlegt, wenn dieser sich korrekt einloggt. Dazu prüfst du bei einem Login über das Formular, ob username + password so in der Tabelle vorkommen. Wenn das der Fall ist, kannst du die nötigen Cookie-Daten anlegen. Da reichen im Grunde folgende Werte:
Code
Außerdem musst du in der Datenbank noch einen beliebigen Wert für die Auto-Login-ID eintragen, welche du dann auch als Cookie setzen musst.
Code
[h1]Prüfen, ob
Zugriff erlaubt[/h1]
Möchte ein Benutzer eine Seite öffnen, dann kannst du zuerst einmal prüfen, ob er überhaupt eingeloggt ist. Dies ist der Fall, wenn die Session für userid gesetzt ist und last_active nicht weiter zurückliegt als dein Sicherheitslimit. (z.B. 20 Minuten ohne Aktivität).
Code
Diese Funktion zeigt dir dann an, ob der Benutzer eingeloggt ist.
[h1]Login über AutoLoginID[/h1]
Sollte er nicht eingeloggt sein, dann kannst du schauen, ob der Nutzer automatisch eingeloggt werden kann.
Code
Wenn die Kombination vorkommt, dann kannst du einen normalen Login durchführen (vgl. oben beim Setzen der Cookies).
[h1]Abschließende Worte[/h1]
Ich hoffe, dass ich dir ein wenig weiterhelfen konnte. Sollten Fragen sein, nur zu. Bei theoretischen Themen helfe ich im Forum immer wieder gerne. :glad:
[h1]Änderung[/h1]
Da warst du ja schneller als ich mit deinem Edit.
Zu deiner Frage:
Zitat:
Notice: Undefined index: password in C:\server\htdocs\login\login.php on line 24
Unknown column 'fdsgfds' in 'where clause'
Das liegt daran, dass du keine Anführungszeichen in deinem SQL-Statement hast.
Es sieht praktisch nach Einsetzen der PHP-Variablen so aus:
Code
Der MySQL-Interpreter denkt sich nun: "Wunderbar, ich schaue mal, ob ich eine Zeile in der Datenbank finde, wo die Spalte username den gleichen Inhalt hat wie die Spalte fdsgfds und die Spalte password den gleichen Inhalt wie die Spalte geheim."
Damit MySQL versteht, dass du keine Spalten meinst, sondern Texte, musst du Anführungszeichen herummachen, damit der Code nachher so aussieht:
Code
Durch das Syntax-Highlighting erkennt man hier nun sehr schön den Unterschied. Im oberen Beispiel sind dein Nutzername und Passwort blau (MySQL erkennt es als Spalte) im unteren Beispiel rot (MySQL erkennt es als Zeichenkette).
password bietet hier eine Ausnahme, weil es auch eine spezielle MySQL-Bedeutung haben kann (als SET PASSWORD). Da aber kein SET davor steht, erkennt MySQL es trotzdem als Spalte an, auch wenn es hier grün markiert ist.
In PHP sieht das folgendermaßen aus:
Code
Ich hoffe, man erkennt die einzelnen Anführungszeichen noch irgendwie :wink: