"Zuletzt eingeloggt"-Funktion
Flo08
- php
0 Matthias Apsel0 Linuchs0 Jörg Reinholz0 Camping_RIDER0 hotti
0 hotti0 Robert R.
0 Flo08
0 hotti0 ChrisB0 Robert R.
Hallo zusammen!
Ich habe mir eine Website programmiert, eine Art Admin-Bereich, das heißt ich habe ein Passwort und mit diesem Passwort
kann ich in den Bereich. Man kann sich NICHT registrieren, was bedeutet, ich NUTZE KEINE Datenbank.
Soweit so gut.
Jetzt möchte ich, dass wenn ich aufgefordert werde mein Passwort einzugeben, damit ich in den Admin-Bereich kann, darunter
ein Feld ist, was anzeigt, wann ich mich zuletzt eingeloggt habe.
Wie kann ich das verwirklichen ?
Am besten sollte es OHNE mySQL-Datenbank funktionieren, da ich ja keine benutze.
Vielleicht gibt es eine Funktion ähnlich der Besucher-Zähler Funktion.
Es kann aber auch etwas völlig anderes sein, jedoch hätte ich gerne Hilfe :)
Im größten Notfall würde auch mySQL gehen, dann aber bitte mit Anleitung.
Danke schon mal im Vorraus
Gruß
Flo08
Om nah hoo pez nyeetz, Flo08!
Jetzt möchte ich, dass wenn ich aufgefordert werde mein Passwort einzugeben, damit ich in den Admin-Bereich kann, darunter
ein Feld ist, was anzeigt, wann ich mich zuletzt eingeloggt habe.Wie kann ich das verwirklichen ?
Wenn es darum geht, wann du dich das letzte mal eingeloggt hast, kommst du um eine Datenbank nicht umhin. Wenn es darum geht, wann du dich das letzte mal an diesem konkreten Rechner mit genau diesem Browser eingeloggt hast, heißt dein Suchbegriff „local storage“.
PS: Du brauchst nicht jedesmal, wenn du an das Ende des Textfeldes kommst, einen Zeilenumbruch ein-
zu-
fü-
gen.
Matthias
Wenn es darum geht, wann du dich das letzte mal eingeloggt hast, kommst du um eine Datenbank nicht umhin.
Ich könnte umhinkommen, indem ich eine Textdatei mit Datum/Zeit des letzten Login lese und das neue datum/Zeit wieder schreibe.
Linuchs
Diese Daten vor dem Login anzuzeigen halte ich nicht für sachgerecht. Dann kann ein potentieller Angreifer sehen, wie aktiv Du selbst bist. Zeige das nach dem Login.
Also:
Login-Formular zeigen
Prüfung des Zugangsdaten.
Bei Erfolg:
Holen der Daten des letzten Zugriffs aus einer bestimmten Datei, z.B. .ht_lastlogin
Speichern dieser Angaben z.B. in einer Session
($_SESSION['lastlogin']['datetime'], $_SESSION['lastlogin']['ip'])
Schreiben der neuen Daten in die gleiche Datei wie eben
Bei Misserfolg: Mindesten 1 Sekunde warten, alles von vorn.
Jörg Reinholz
Aloha ;)
Nur als kleine Anmerkung zu verstehen...
Diese Daten vor dem Login anzuzeigen halte ich nicht für sachgerecht. Dann kann ein potentieller Angreifer sehen, wie aktiv Du selbst bist. Zeige das nach dem Login.
Ich stimme dir zu - das ist aber auch eine Frage dessen, ob mich das interessiert oder nicht. Kann ja sein, dass es mir vollkommen egal ist, ob potentielle Angreifer wissen, wann ich zuletzt eingeloggt war. Zumindest ist das kein unmittelbares Sicherheitsrisiko.
Und trotzdem: Wichtig, dass du das erwähnst, denn man sollte sich zumindest zuvor aktiv Gedanken darüber gemacht haben...
Grüße,
RIDER
Aloha ;)
Und trotzdem: Wichtig, dass du das erwähnst, denn man sollte sich zumindest zuvor aktiv Gedanken darüber gemacht haben...
Über die sinnvolle Verwendung von Sessions (egal ob in Dateien oder Datenbanken gespeichert) nachzudenken, lohnt sich eigentlich immer ;)
Schöne Grüße.
Diese Daten vor dem Login anzuzeigen halte ich nicht für sachgerecht. Dann kann ein potentieller Angreifer sehen, wie aktiv Du selbst bist.
Katze-Schwanz-Problem ;)
Wenn Login-Daten einschließlich Login-History, so wie sich das gehört, in der SESSION gespeichert werden, sieht auch ein potentieller Angreifer nur seine eigenen Logins, weil auch ein potentieller Angreifer seine eigene SESSION bekommt (oder auch nicht).
Schöne Grüße ;)
Liebe Mitdenker,
liebe Wissende,
liebe Neugierige,
ja!
Bei Misserfolg: Mindesten 1 Sekunde warten, alles von vorn.[/code]
Warum?
Schon mal 'was von 'ab' und ähnlichen Tools gehört? Da gibt es genug Möglichkeiten, 100 von Zugriffen innerhalb einer Zeiteinheit "parallel" zu fahren.
Es ist sinnlos, den Webserver mit nutzloser Wartezeit außer Betrieb zu setzen.
Besser fail2ban o. ä. installieren.
Spirituelle Grüße
Euer Robert
Besser fail2ban o. ä. installieren.
Ja. Schon. Aber ich habe erhebliche Zweifel daran, dass der TO root-Rechte hat.
Da gibt es genug Möglichkeiten, 100 von Zugriffen innerhalb einer Zeiteinheit "parallel" zu fahren.
Naja. Wenn die Brut-Force-Attacke (aus Sicht eines rational handelnden Angreifers übrigens: versehentlich) zur DDoS-Attacke wird steht man eben im Widerstreit zwischen der Verfügbarkeit und der Vertraulichkeit der Daten.
Jörg Reinholz
Hier sollte der Beitrag hin
Hallo Matthias,
tut mir Leid, bin neu hier und kenne mich noch nicht aus.
Ja, wie gesagt im Notfall geht es auch mit einer Datenbank,
kannst du es mir erklären ?
Also wie ich eine neue Tabelle anlegen usw. bekomme ich selber hin:D Aber wie das "zuletzt eingeloggt" dann auch mit der richtigen Uhrzeit/dem richtigen Datum da steht, da brauche ich Hilfe
Hallo zusammen!
ein Feld ist, was anzeigt, wann ich mich zuletzt eingeloggt habe.
Wie kann ich das verwirklichen ?
Speichere die Logins in der SESSION(Datei). Was Dein Ziel betrifft: Anstatt nur ein Login zu speichern, speichere mehrere Logins.
Überlege Dir dazu, ob Du die Logins einfach nur durchnumerierst oder als Schlüssel den Zeitstempel nimmst (falls eine sekundengenaue Auflösung ausreicht). Überlege Dir eine Datenstruktur für die Login-Tabelle. Über den Serializer musst Du Dir keine Gedanken machen, das übernimmt PHP für Dich, d.h., Du greifst einfach in das Array $_SESSION.
Falls Fortlaufende Nummern: Die kannst Du ebenfalls in $_SESSION verwalten.
MfG
Hatte schon die Idee, einfach nur den Zeitstempel zu speichern, und den dann beim nächsten Anmelden ausgeben zu lassen. Das müsste doch auch gehen oder ?
Hatte schon die Idee, einfach nur den Zeitstempel zu speichern, und den dann beim nächsten Anmelden ausgeben zu lassen. Das müsste doch auch gehen oder ?
Klar ;)
Es entscheidet nur die Datenstruktur, untenstehend mein Beispiel für _ein_ mögliches Login und Zeitstempel(ts):
'SESSION' => {
'LOGINTAB' => {
'group' => 'admin',
'ts' => 1422030138,
'user' => 'ad'
}
Das wäre nur zu erweitern.
MfG
Hi,
Jetzt möchte ich, dass wenn ich aufgefordert werde mein Passwort einzugeben, damit ich in den Admin-Bereich kann, darunter ein Feld ist, was anzeigt, wann ich mich zuletzt eingeloggt habe.
Wie kann ich das verwirklichen ?
An einem Ort, wo du Schreibrechte hast, eine Datei touchen (das erstellt die Datei automatisch, wenn sie noch nicht existiert), und dann im Anmeldeformular deren letzten Änderungszeitpunkt mit filemtime auslesen, wie gewünscht mit date formatieren, und fertig.
MfG ChrisB
Liebe Mitdenker,
liebe Wissende,
liebe Neugierige,
ja!
Ohne genaueres über dein "Loginverfahren" zu wissen, kann man die Frage eigentlich gar nicht vernünftig beantworten. Wenn Du nur den üblichen "htaccess-Schutz" für den geschützten Bereich benutzt, gibt es kein "Login", sondern nur ein "Authenticate", und das findet mit jedem Request erneut statt. Basic Auth kennt kein "Logout", folglich kann man auch nicht feststellen, welche Requests zu demselben "Login" gehören.
Duer erhältst dann also (nach ChrisBs Methode) immer den Zeitpunkt des letzten Requests, bevor Du ihn wieder mit touch($filename) überschreibst.
Spirituelle Grüße
Euer Robert
Duer erhältst dann also (nach ChrisBs Methode) immer den Zeitpunkt des letzten Requests, bevor Du ihn wieder mit touch($filename) überschreibst.
touch($filename) ändert, wenn die Datei vorhanden ist, nicht deren Inhalt sondern setzt die Zugriffs- und Modifikationszeit (sofern das Dateisystem diese "Stempel" unterstützt).
Überschrieben wird da gar nichts.
Jörg Reinholz
Liebe Mitdenker,
liebe Wissende,
liebe Neugierige,
ja!
Duer erhältst dann also (nach ChrisBs Methode) immer den Zeitpunkt des letzten Requests, bevor Du ihn wieder mit touch($filename) überschreibst.
touch($filename) ändert, wenn die Datei vorhanden ist, nicht deren Inhalt sondern setzt die Zugriffs- und Modifikationszeit (sofern das Dateisystem diese "Stempel" unterstützt).
Überschrieben wird da gar nichts.
Doch, die Node. Sonst wäre es ja sinnlos, touch() zu benutzen. ;-P
Spirituelle Grüße
Euer Robert
touch($filename) ändert, wenn die Datei vorhanden ist, nicht deren Inhalt sondern setzt die Zugriffs- und Modifikationszeit (sofern das Dateisystem diese "Stempel" unterstützt).
Überschrieben wird da gar nichts.
Zur Klarstellung: Das könnte genügen wenn die Information genügt wann der letzte Login erfolgte (dazu müsste frühere Time-Stamp der Datei mit filectime() gelesen werden) reicht aber nicht wenn weitere Informationen (z.B. die Herkunfts-IP oder ggf. auch der Nutzername) gespeichert und angezeigt werden sollen.
Jörg Reinholz