Kunden und Adressen auf Prepared Statements umgebaut
incs/saveNchange.php neu geschrieben: Adressen, Telefonnummern, Kontakte, Notizen und Konten laufen ueber db_abfrage() mit Platzhaltern, mehrschrittiges Speichern in einer Transaktion. Weil sich die Speicherfunktionen gegenseitig aufrufen, klammern beginneSpeichern()/beendeSpeichern() die Verschachtelung; incs/rechnung.php nutzt sie ebenfalls. Kunden- und Lieferantenseiten waren zwei fast gleiche Kopien und teilen sich jetzt partnerAddSeite(), partnerChangeSeite() und partnerShowDaten(). Dabei behoben: - SQL-Injektion ueber die Suchbegriffe der Kunden-, Lieferanten-, Adress-, Kommissions- und Projektsuche sowie ueber die Artikel-Autovervollstaendigung - gespeichertes XSS: Notizen (nl2br escapt nicht), Bankname, Dokumenttyp, Namen und Adressen in allen Trefferlisten - sites/liefershow.php war unter PHP 8 ein Fatal ($kdnres.id) - "Telefonnummer loeschen" im Kundenbereich lief in einen Fatal, die Nummern einer geloeschten Adresse blieben stehen (Spalte hiess adress_id statt adresse_id, mysql_fetch_assoc gibt es nicht mehr) - Geburtstag ohne Jahr wurde im Formular verschluckt, die IBAN kam beim Bearbeiten aus $_GET statt aus dem Konto - die Versionskette eines Kunden brach nach einem Schritt ab - Kommissionsadressen speicherten die Ortsangabe der Adresse statt der des Telefonformulars und einen Adresstyp als Telefontyp - Blaettern in den Trefferlisten: ohne ORDER BY konnte dieselbe Zeile zweimal oder gar nicht erscheinen; ajax_searchadress() bekam die Seite nicht - Hauptadresse laesst sich nicht mehr loeschen, Kundendaten nicht mehr ueber die Lieferantenseite (und umgekehrt) - ajax/auto/* baute JSON von Hand zusammen, ein Anfuehrungszeichen im Ort machte die Liste unbrauchbar Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+6
-120
@@ -1,121 +1,7 @@
|
||||
<?php
|
||||
if($_GET["id"])
|
||||
{
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM partner WHERE id='".mysql_escape_string($_GET["id"])."' AND typ_id = 1");
|
||||
$kdnres=mysqli_fetch_assoc($qry);
|
||||
$smarty->assign("kunde",$kdnres);
|
||||
if($kdnres["id"])
|
||||
{
|
||||
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE updated_by='".$kdnres["id"]."'");
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$oldrecords[] = $res;
|
||||
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE updated_by='".$res["id"]."'");
|
||||
}
|
||||
$smarty->assign("oldrecords",$oldrecords);
|
||||
|
||||
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE id='".$kdnres["updated_by"]."'");
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$newrecords[] = $res;
|
||||
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE id='".$res["updated_by"]."'");
|
||||
}
|
||||
$smarty->assign("newrecords",$newrecords);
|
||||
|
||||
$tmp = array();
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM anrede");
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$tmp[$res["id"]] = $res["anrede"];
|
||||
}
|
||||
$smarty->assign("anr",$tmp);
|
||||
|
||||
$tmp = array();
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM titel");
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$tmp[$res["id"]] = $res["titel"];
|
||||
}
|
||||
$smarty->assign("titel",$tmp);
|
||||
|
||||
|
||||
|
||||
$qry = mysqli_query($dbconn,"SELECT name,typ,tel.id,nr,ort,ortsteil,plz,vwahl, ort.id AS ort_id FROM tel LEFT JOIN teltyp ON typ_id = teltyp.id LEFT JOIN ort ON ort_id = ort.id WHERE partner_id='".mysql_escape_string($_GET["id"])."' AND tel.adresse_id = 0 ORDER BY typ_id ASC");
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$tels[] = $res;
|
||||
}
|
||||
$smarty->assign("telnrn",$tels);
|
||||
|
||||
|
||||
$qry = mysqli_query($dbconn,"SELECT kontakt.id, kontakt, partner_id, typ FROM kontakt LEFT JOIN kontakttyp ON kontakttyp.id = kontakt.typ_id WHERE partner_id='".mysql_escape_string($_GET["id"])."' ORDER BY typ_id ASC");
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$contacts[] = $res;
|
||||
}
|
||||
$smarty->assign("contacts",$contacts);
|
||||
|
||||
$tmp = array();
|
||||
$qry = mysqli_query($dbconn,"SELECT ktonr,iban,swift,blz,bank,partner_id,konto.id,inhaber
|
||||
FROM konto JOIN bank ON konto.bank_id = bank.id WHERE partner_id='".mysql_escape_string($_GET["id"])."'")
|
||||
or $err=error("Fehler beim auslesen der Konten:<br />". mysqli_error($dbconn));
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$tmp[] = $res;
|
||||
}
|
||||
$smarty->assign("kontos",$tmp);
|
||||
|
||||
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM notiz WHERE partner_id='".mysql_escape_string($_GET["id"])."'");
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$res["file"] = search_file("./".UPLOADS_PATH."notes/","!^".$res["id"]."\.(.)+$!");
|
||||
$notes[] = $res;
|
||||
}
|
||||
|
||||
|
||||
$qry = mysqli_query($dbconn,"SELECT COUNT(rechnr) AS nr_mahn, NOW() AS datetime FROM rechnung WHERE typ_id = 6 AND partner_id = '".mysql_escape_string($_GET["id"])."'") or $err=error("Fehler beim Auslesen der Daten:<br />".mysqli_error($dbconn));
|
||||
$res=mysqli_fetch_assoc($qry);
|
||||
if($res["nr_mahn"] > 0)
|
||||
{
|
||||
$mahn["notiz"] = "ACHTUNG! Es sind bereits ".$res["nr_mahn"]." Mahnungen für diesen Kunden vorhanden!!";
|
||||
$mahn["color"] = "#f76";
|
||||
$mahn["datetime"] = $res["datetime"];
|
||||
$notes[] = $mahn;
|
||||
}
|
||||
$smarty->assign("notes",$notes);
|
||||
$qry = mysqli_query($dbconn,"SELECT plz, ortsteil, tel.nr, ort.vwahl, ort, str, DATE_FORMAT(gebdat,'%d.%m.%Y') AS gebdat, DATE_FORMAT(gebdat2,'%d.%m.%Y') AS gebdat2, hnr, vname, nname, vname2, nname2, firma, adresse.id, land, anrede_id, titel_id, anrede2_id, titel2_id, adresstyp.typ, adresse.typ_id
|
||||
FROM adresse JOIN
|
||||
adresstyp ON adresstyp.id = adresse.typ_id
|
||||
LEFT JOIN strasse ON str_id = strasse.id
|
||||
LEFT JOIN ort ON ort_id = ort.id
|
||||
LEFT JOIN land ON land_id = land.id
|
||||
LEFT JOIN tel ON tel.adresse_id = adresse.id
|
||||
WHERE adresse.partner_id='".mysql_escape_string($_GET["id"])."' AND adresse.typ_id != 5
|
||||
ORDER BY typ_id ASC")or $err=error("Mysql-Fehler:<br />".mysqli_error($dbconn));
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$adressen[] = $res;
|
||||
}
|
||||
$smarty->assign("adressen",$adressen);
|
||||
|
||||
$qry = mysqli_query($dbconn,"SELECT id
|
||||
FROM adresse WHERE adresse.partner_id='".mysql_escape_string($_GET["id"])."' AND adresse.typ_id = 5
|
||||
ORDER BY typ_id ASC")or $err=error("Mysql-Fehler:<br />".mysqli_error($dbconn));
|
||||
if(mysqli_fetch_array($qry))
|
||||
$smarty->assign("kommadressen",1);
|
||||
|
||||
$tmp=array();
|
||||
$qry = mysqli_query($dbconn,"SELECT typ, id FROM rechtyp");
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$tmp[] = $res;
|
||||
}
|
||||
$smarty->assign("rechtypen",$tmp);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
$_SESSION["camefrom"] ="kundenshow&id=".$_GET["id"];
|
||||
<?php
|
||||
require_once "incs/saveNchange.php";
|
||||
|
||||
partnerShowDaten($dbconn, $smarty, parameterGanzzahl("id"), 1);
|
||||
$_SESSION["camefrom"] = "kundenshow&id=".parameterGanzzahl("id");
|
||||
$smarty->display("kundenshow.tpl");
|
||||
?>
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user