- sites/start.php: ein Query statt zwei, Passwortvergleich per hash_equals in PHP statt im SQL, Updates per id. Die Eingaben gehen nicht mehr durch htmlspecialchars(): Passwoerter werden beim Anlegen roh gehasht, mit & < > " ' konnte man sich deshalb bisher nie anmelden. - getUserSetting/updateUserSetting mit Platzhaltern; behoben: INSERT-Zweig rief mysqli_real_escape_string ohne Verbindung auf (Fatal Error), $mysqli_error als Variable, ungewolltes echo "update". Aufrufer escapen nicht mehr vor (sonst doppelt), settings.php: Tippfehler mysqi_real_escape_string beim Speichern von show_sks behoben, style nur als Dateiname ohne Pfad. - authServer.php, addKey.php, userkeys.php, checkAdduser(): Platzhalter. Passkey-INSERT setzt lastAuth/authKey (Pflichtfelder im strikten Modus). addKey nur als reine Ziffern, sonst passte "12345678xyz" per Typumwandlung. - checkLogin() entfernt: nirgends aufgerufen, fragte die nicht existierende Tabelle users ab. - userkeys.tpl: Passkey-Name escaped. Getestet gegen die migrierte Testdatenbank im strikten Modus. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
141 lines
4.3 KiB
PHP
141 lines
4.3 KiB
PHP
<?php
|
|
require_once("incs/saveNchange.php");
|
|
$_SESSION["camefrom"] = "settings";
|
|
|
|
if($_GET["do"] == "zahlziel" && $_GET["add"] == 1)
|
|
{
|
|
if($_GET["formsent"] == 1)
|
|
{
|
|
$days = mysqli_escape_string($dbconn,$_POST["days"]);
|
|
$skontodays = mysqli_escape_string($dbconn,$_POST["skontodays"]);
|
|
$skonto = mysqli_escape_string($dbconn,$_POST["skonto"]);
|
|
if($days < 2)
|
|
$days = 0;
|
|
if($skontodays < 2)
|
|
$skontodays = 0;
|
|
if($skontodays > $days)
|
|
$err = error("Der Zeitraum für die Bezahlung mit skonto muss kürzer sein, als der Zeitraum für die reguläre Zahlung ohne Abzüge.");
|
|
if($skonto > 95)
|
|
$skonto = 95;
|
|
if(!$err)
|
|
{
|
|
if($days > 0)
|
|
$zahlziel = $days." Tage ohne Abzug";
|
|
else
|
|
$zahlziel = "sofort ohne Abzug";
|
|
if($skonto && $skontodays)
|
|
$zahlziel .= ", Skonto ".$skontodays." Tage ".$skonto."%";
|
|
elseif($skonto)
|
|
$zahlziel .= ", Skonto sofort ".$skonto."%";
|
|
|
|
$querystr="INSERT INTO zahlziel SET ziel = '$zahlziel'";
|
|
$qry = mysqli_query($dbconn,$querystr) or $err=error("Fehler beim Speichern des Zahlungsziels<br />".mysqli_error($dbconn));
|
|
$undoid=mysqli_insert_id($dbconn);
|
|
$undoquerystr="DELETE FROM zahlziel WHERE id = '$undoid'";
|
|
if(!$err)
|
|
{
|
|
$err = saveLog($dbconn,$querystr."[zahlziel neu]",$undoquerystr,"anlegen");
|
|
}
|
|
if(!$err)
|
|
doneNreturn("Erfolgreich angelegt");
|
|
|
|
|
|
}
|
|
|
|
}
|
|
$smarty->assign("days",$days);
|
|
$smarty->assign("skontodays",$skontodays);
|
|
$smarty->assign("skonto",$skonto);
|
|
$smarty->display("addzahlziel.tpl");
|
|
}
|
|
elseif($_GET["do"] == "buchKto" && $_GET["add"] == 1)
|
|
{
|
|
if($_GET["formsent"] == 1)
|
|
{
|
|
$kto = mysqli_escape_string($dbconn,$_POST["kto"]);
|
|
$name = mysqli_escape_string($dbconn,$_POST["name"]);
|
|
$descr = mysqli_escape_string($dbconn,$_POST["descr"]);
|
|
$querystr="INSERT INTO buchungsKontos SET kto = '$kto', name = '$name', descr='$descr'";
|
|
$qry = mysqli_query($dbconn,$querystr) or $err=error("Fehler beim Speichern des Buchungskontos<br />".mysqli_error($dbconn));
|
|
$undoid=mysqli_insert_id($dbconn);
|
|
$undoquerystr="DELETE FROM buchungsKontos WHERE id = '$undoid'";
|
|
if(!$err)
|
|
{
|
|
$err = saveLog($dbconn,$querystr."[Buchungskonto neu]",$undoquerystr,"anlegen");
|
|
}
|
|
if(!$err)
|
|
doneNreturn("Erfolgreich angelegt");
|
|
|
|
}
|
|
$smarty->assign("kto",$kto);
|
|
$smarty->assign("name",$name);
|
|
$smarty->assign("descr",$descr);
|
|
$smarty->display("addbuchKto.tpl");
|
|
}
|
|
else
|
|
{
|
|
if($_GET["formsent"] == 1)
|
|
{
|
|
// nur Dateien direkt in styles/, kein ../
|
|
if(basename($_POST["style"]) === $_POST["style"] && is_file("./styles/".$_POST["style"]))
|
|
{
|
|
updateUserSetting($dbconn,"style", $_POST["style"], $_SESSION["user"]);
|
|
$_SESSION["style"] = $_POST["style"];
|
|
}
|
|
updateUserSetting($dbconn,"show_sks", (int)$_POST["show_sks"], $_SESSION["user"]);
|
|
}
|
|
if(substr($_SESSION["rights"],RIGHTS_SUPERADMIN,1) & RIGHTS_CHANGE || substr($_SESSION["rights"],RIGHTS_SUPERADMIN,1) & RIGHTS_ADD)
|
|
$smarty->assign("superadmin","add");
|
|
elseif(substr($_SESSION["rights"],RIGHTS_SUPERADMIN,1) & RIGHTS_CHANGE)
|
|
$smarty->assign("superadmin","change");
|
|
elseif(substr($_SESSION["rights"],RIGHTS_SUPERADMIN,1) & RIGHTS_LOOK)
|
|
$smarty->assign("superadmin","look");
|
|
else
|
|
$smarty->assign("superadmin","");
|
|
$smarty->assign("heading","Einstellungen");
|
|
$smarty->display("heading.tpl");
|
|
|
|
//user list
|
|
$qry = mysqli_query($dbconn, "SELECT nick, vname, nname, blocked, rights, id, weekhours, vacationdays, sahours, rfid, timelog_start FROM user WHERE nick != 'ALL'");
|
|
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$res["rights"] = displayRights($res["rights"]);
|
|
$smarty->append("users",$res);
|
|
}
|
|
|
|
//style list
|
|
$styledir = opendir("./styles/");
|
|
$styles = Array();
|
|
while($res = readdir($styledir))
|
|
{
|
|
if(preg_match("!^.*\.css$!",$res) && $res != "pwdmeter.css")
|
|
{
|
|
$styles[$res] = substr($res,0,-4);
|
|
}
|
|
}
|
|
//buchKto list
|
|
$qry = mysqli_query($dbconn, "SELECT id, kto, name, descr FROM buchungsKontos");
|
|
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$smarty->append("buchKto",$res);
|
|
}
|
|
//zahlziel list
|
|
$qry = mysqli_query($dbconn, "SELECT ziel, id FROM zahlziel");
|
|
|
|
while($res = mysqli_fetch_assoc($qry))
|
|
{
|
|
$smarty->append("zahlziele",$res);
|
|
}
|
|
|
|
|
|
$show_sks = getUserSetting($dbconn,"show_sks", $_SESSION["user"], 1);
|
|
$smarty->assign("show_sks",$show_sks);
|
|
$smarty->assign("styles",$styles);
|
|
|
|
|
|
|
|
$smarty->display("settings.tpl");
|
|
}
|
|
?>
|