PHP: Login per $_SESSION |
FrediL
Fachidiot Threadstarter
Beiträge: 101 |
Hallo!
Ich habe gestern mal ein bisschen mit den Sessions in PHP gebastelt und mir einen Login-Bereich erstellt, wie es beim Webwork-Magazin beschrieben ist.
Wie kann ich diesen Bereich erweitern, so dass bei dreimaliger flascher Passwort eingabe der Login für diesen User gesperrt wird?
--> Kann ich dazu einfach in der DB noch eine Spalte mit Status anlegen und diese ggf. ändern, so dass ein einloggen nicht möglich ist?
Außerdem hätte ich gerne noch eine zeitliche Begrenzung, so dass nach sagen wir 30min Inaktivität die Session geschlossen wird.
--> Dazu müsste ich ja nach 30min einfach auf die logout-Datei verlinken. Nur dies soll ja nur geschehen, wenn man im Login nichts mehr macht.
Vielen Dank im Voraus
---
ergebniswelt.com -> Fußballergebnisse und mehr
|
 Profil
Website
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1502 |
a) in dein formular ein feld einbauen, in dem du die anzahl an faillogins einsetzt und bei jedem faillogin diese zahl um eins erhöhen. wenn eine zahl >= 3 übermittelt wird einfach abweisen und ip auf den index (tabelle) setzen.
---
Arbeit ist das Feuer der Gestaltung. - Marx
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
Ticonderoga
Pixelschubser
Beiträge: 4 |
Generell ist es sinnvoll, Zugänge mit einem "Aktiv"-Feld zu speichern. Damit kannst Du dann auch Benutzer deaktivieren, ohne diese löschen zu müssen. Wenn man z.B. mit Fremdschlüsseln arbeitet, d.h. Daten teilweise in anderen Tabellen (Relationen) speichert, kann es ziemlich schnell ecklig werden, wenn man anfängt so etwas zu löschen, weil damit Inkonsistenzen, d.h. Zustände, die eigentlich nicht eintreten dürfen, entstehen können und Dein Programm durcheinander bringen. Deswegen sollte man sich sowieso angewöhnen, möglichst ohne "Löschen"-Operationen zu arbeiten. Keine Angst, die Datenbank läuft auch nicht über, die DB-Managementsystem organisiert die Daten schon möglichst effizient.
Bzgl. deiner Aktivität, nach der nach 30 Minuten ausgeloggt werden soll: Ich würde an Deiner Stelle die letzte Aktivität auch als Attribut in der Relation (Tabelle) speichern und beim Laden einer Seite des geschützten Bereichs dieses Attribut updaten, bzw. prüfen, ob der letzte Eintrag schon länger als 30 Minuten her ist. Wenn Du einfach auf die log-out datei verweist, könnte man das System einfacher überlisten...
Diese Nachricht wurde geändert von: Ticonderoga |
 Profil
Editieren
Zitieren
|
FrediL
Fachidiot Threadstarter
Beiträge: 101 |
Also deiner Meinung nach, soll ich einfach in der DB, in der die Userdaten gespeichert werden eine Spalte anlegen, in die ich immer die letzte aktive Zeit eintrage. Am Anfang jeder Datei dann einfach diese Zeit mit der jetzigen vergleichen und dann entweder autom auf die Logout-Seite verlinken oder eben die Datei normal ausführen.
Nur was meinst du damit:
Wenn Du einfach auf die log-out datei verweist, könnte man das System einfacher überlisten... |
Gibt es eine Möglichkeit diese aktive Zeit auch einfach mit der Session ID zu übergeben?
---
ergebniswelt.com -> Fußballergebnisse und mehr
|
 Profil
Website
Editieren
Zitieren
|
Ticonderoga
Pixelschubser
Beiträge: 4 |
ja, prinzipiell. Du solltest beim Laden einer jeden Datei, die Du im internern Bereich ablegst, als erstes prüfen, ob der Benutzer etwas im internen Bereich zu suchen hat, sprich ob seine letzte in der Relation eingetragene Zeit und die jetzige über eine halbe Stunde differieren. Und natürlich solltest Du - bei erfolgreicher Prüfung - ein Update der Zeit der letzten Aktion machen, damit der Benutzer, falls er länger als eine halbe Stunde im internen Bereich ist, nicht zu Unrecht rausgeschmissen wird.
Wozu willst Du ihn dann (wenn "seine Zeit abgelaufen ist") denn eigentlich noch extra ausloggen? Wie ich schon geschrieben habe, würde ich den Vorgang des ausloggens dann nicht extra über das Laden einer neuen Datei realisieren, weil ich das als Außenstehender mit den richtigen Rahmenbedingungen und ein wenig Sachkenntnis manipulieren kann.
Die aktive Zeit per Session-ID mit übergeben? Ich muß leider zugeben, dass ich das noch nie gemacht habe. Prinzipiell halte ich aber das Speichern und Auslesen aus der Datenbank für die bessere und sichere Methode. Außerdem kann ich nebenbei das Verhalten meiner User damit auch ein wenig "überwachen"... Sprich, Erkenntnisse über das Surfverhalten gewinnen... kann man natürlich positiv und negativ sehen - aber das ist auch nicht Thema dieses Threats
|
 Profil
Editieren
Zitieren
|
FrediL
Fachidiot Threadstarter
Beiträge: 101 |
Ja, ist das mit dem Logout denn nicht wichtig? Ich meine die Session muss doch gelöscht werden, oder? Was passiert eigentlich, wenn man sich nicht ausloggt?
---
ergebniswelt.com -> Fußballergebnisse und mehr
|
 Profil
Website
Editieren
Zitieren
|