Cookies funktionieren nicht =(
Satorus
- php
Ich habe folgendes Problem:
Ich will ein eigenes Loginscript coden und mit cookies machen, dass man nur 3 Versuche hat.Hier der Code:
<?php
if(empty($_POST['kennwort'])) {
echo "Bitte geben sie einen Benutzernamen ein";
}
if("11" == ($_POST['kennwort'])) {
echo "JAAA";
}
else {
echo "Passwort Falsch !";
error_reporting(E_ALL);
if(isset($_COOKIE['pass1'])) {
if(isset($_COOKIE['pass2'])) {
if(isset($_COOKIE['pass3'])) {
Header("Location: /html/admin/index.php");
} else {
setcookie("pass3", "falsch");
echo "<br>Keine Versuche mehr !";
}
} else {
setcookie("pass2", "falsch");
echo "<br>Noch 1 Versuch !";
}
} else {
setcookie("pass1", "falsch");
echo "<br>Noch 2 Versuche !";
}
}
?>
Wenn ich mich mit den Richtigen Daten ( hier das passwort 11) einlogge erstellt er trozdem ein Cookie ...
Bitte helft mir ! ;)
Hello,
wie willst Du dein "Login" denn später verwalten, wenn es erfolgreich war?
Ich würde Dir empfehlen, dafür eine Session zu starten. Die Session als solches hat noch nichts mit dem "Login" zu tun, ist aber Träger der Wiedererkennung des Clients.
In der DB-Tabelle, in der Du dann die Nutzerdten führst, kannst Du auch vermerken, wieviele erfolglose Anmeldeversuche ein User seit X Minuten vorgenommen hat.
Wie man soetwas aufbauen könnte, findest Du z.B. hier:
http://forum.de.selfhtml.org/archiv/2008/4/t170126/#m1111727
Ein harzliches Glückauf
Tom vom Berg
Ich würde Dir empfehlen, dafür eine Session zu starten. Die Session als solches hat noch nichts mit dem "Login" zu tun, ist aber Träger der Wiedererkennung des Clients.
In der DB-Tabelle, in der Du dann die Nutzerdten führst, kannst Du auch vermerken, wieviele erfolglose Anmeldeversuche ein User seit X Minuten vorgenommen hat.
Wie man soetwas aufbauen könnte, findest Du z.B. hier:
http://forum.de.selfhtml.org/archiv/2008/4/t170126/#m1111727
Danke für deinen schnellen Post! :)
Sieht ja ganz nett aus ...
Aber leider hab ich keine ahnung von My SQL Datenbanken =(
... Das müsste ich ja eh mal lernen aber im Moment such ich ne andere Möglichkeit für den Login ...
THX @ Tom ;)
Hello,
Sieht ja ganz nett aus ...
Aber leider hab ich keine ahnung von My SQL Datenbanken =(
dann fang einfach an:
Starte eine Session.
Fordere den User zur Authentifikation auf.
Vergleiche seine Daten mit denen, die Du für ihn gespeichert hast, z.B. in einer Textdatei mit einem serialisierten Array oder einer CSV-Datei.
Wenn das "Login" nicht stimmt, zähle in Deiner Session den Zähler hoch oder füge einen Eintrag in einem Subarray der Session hinzu.
Besser wäre es aber, diese Einträge in der Userverwaltung vorzunehmen, also dort, wo Du Name und Passwort speicherst, denn da hast Du sie dann zentral für alle User. Außerdem sind diese Daten (fehlerhafter Versuch) ja auch an den User gebunden und nicht an seine Sessions... :-)
Welche Daten müste denn so eine Userverwaltung halten können?
- Username
- Passwort
- user-flag (0 für User darf sich einloggen, 1 = User ist eingelogged, 2 bis n = Sperrgrund)
- last_login
- last_request
- login_failed[]
- login_session
Da kannst Du jetzt ein serialisiertes Array daraus machen:
$_userdata = array(); ## leeres Array für alle User anlegen
$_userdata[$username] = array(); ## leeres Subarray für $username anlegen
$_userdata[$username]['password'] = $password; ## Password für $username festlegen
$_userdata[$username]['flag'] = 0; ## User ist nicht gesperrt und nicht angemeldet
$_userdata[$username]['lastlogin'] = 0; ## Letzter Login war um ...
$_userdata[$username]['lastrequest'] = 0; ## Letzter Request war um ...
$_userdata[$username]['loginfailed'] = array(); ## kein fehlerhaftes Login bisher
Dazu musst Du Dir nun nur ein paar kleine Funktionen schreiben, die die Datei auslesen, auswerten, updaten und wieder wegschreiben.
Bis etwa fünfhundert User kann man damit sehr gut leben.
Ein harzliches Glückauf
Tom vom Berg