display("heading.tpl"); $smarty->assign("local",isLocal()); if(isset($_GET["formsent"]) && $_SESSION["login"] != "valid" && isLocal()) { // Eingaben unverändert verwenden: Passwörter werden beim Anlegen roh // gehasht, ein htmlspecialchars() hier ließ Passwörter mit & < > " ' // nie passen. Ausgabe-Escaping übernimmt das Template. $nick = isset($_POST["user"]) && is_string($_POST["user"]) ? $_POST["user"] : ""; $pass = isset($_POST["pass"]) && is_string($_POST["pass"]) ? $_POST["pass"] : ""; $udata = db_zeile($dbconn, "SELECT * FROM user WHERE nick = ? AND blocked = 0", array($nick)); if($udata === false) error("Es ist ein Fehler in der abfrage der Benutzerdaten:
".formaterror(mysqli_error($dbconn))); elseif($udata === null) error("Dieser Benutzername existiert nicht."); elseif(hash_equals($udata["pass"], crypt($pass, $udata["salt"]))) { // neue Session-ID nach dem Login, sonst ist Session-Fixation möglich session_regenerate_id(true); $_SESSION["login"] = "valid"; $_SESSION["logedout"] = $udata["logedout"]; $_SESSION["user"] = $udata["id"]; $_SESSION["nick"] = $udata["nick"]; $_SESSION["vname"] = $udata["vname"]; $_SESSION["nname"] = $udata["nname"]; $_SESSION["rights"] = $udata["rights"]; $_SESSION["lastlogin"] = $udata["lastlogin"]; $_SESSION["numlogins"] = $udata["numlogins"]; $_SESSION["style"] = getUserSetting($dbconn,"style", $udata["id"]); if(!is_file("styles/".$_SESSION["style"])) { updateUserSetting($dbconn,"style", "default.css", $udata["id"]); $_SESSION["style"] = getUserSetting($dbconn,"style", $udata["id"]); } $_SESSION["zoom"] = getUserSetting($dbconn,"zoom", $_SESSION["user"], 1); $_SESSION["privateNotes"] = getUserSetting($dbconn,"privnotes", $_SESSION["user"], ""); db_abfrage($dbconn, "UPDATE user SET wrongpw = 0, lastlogin = NOW(), numlogins = numlogins + 1, logedout = 0 WHERE id = ?", array($udata["id"])); } elseif($udata["wrongpw"] < 10) { db_abfrage($dbconn, "UPDATE user SET wrongpw = wrongpw + 1 WHERE id = ?", array($udata["id"])); $triesleft = 10 - $udata["wrongpw"]; if($triesleft > 1) error("Der Benuzername oder das Passwort sind falsch, bitte versuchen Sie es erneut (Nach weiteren $triesleft Versuchen wird der Benutzer deaktiviert und muss vom Hauptbenutzer wieder aktiviert werden, damit er sich anmelden kann.)"); else error("Der Benuzername oder das Passwort sind falsch, bitte versuchen Sie es erneut (Wenn der nächste Versuch falsch ist, wird der Benutzer für deaktiviert und muss vom Hauptbenutzer wieder aktiviert werden, damit er sich anmelden kann.)"); } else { db_abfrage($dbconn, "UPDATE user SET blocked = 1 WHERE id = ?", array($udata["id"])); error("Der Benuzer wurde deaktiviert, er muss vom Hauptbenutzer wieder aktiviert werden, damit er sich anmelden kann."); } } if($_SESSION["login"]=="valid"){ header('Location:?action=kunden'); } else{ $smarty->display("start.tpl"); } ?>