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:
+5
-118
@@ -1,120 +1,7 @@
|
||||
<?php
|
||||
if($_GET["id"])
|
||||
{
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM partner WHERE id='".mysql_escape_string($_GET["id"])."' AND typ_id = 2")
|
||||
or $err=error("Fehler beim auslesen des Zulieferers:<br />". mysqli_error($dbconn));
|
||||
$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"]."'")
|
||||
or $err=error("Fehler beim auslesen der neueren Versionen:<br />". mysqli_error($dbconn));
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$oldrecords[] = $res;
|
||||
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE updated_by='".$res["id"]."'")
|
||||
or $err=error("Fehler beim auslesen der neueren Versionen:<br />". mysqli_error($dbconn));
|
||||
}
|
||||
$smarty->assign("oldrecords",$oldrecords);
|
||||
|
||||
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE id='".$kdnres["updated_by"]."'")
|
||||
or $err=error("Fehler beim auslesen der älteren Versionen:<br />". mysqli_error($dbconn));
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$newrecords[] = $res;
|
||||
$qry = mysqli_query($dbconn,"SELECT id, datetime_new FROM partner WHERE id='".$res["updated_by"]."'")
|
||||
or $err=error("Fehler beim auslesen der älteren Versionen:<br />". mysqli_error($dbconn));
|
||||
}
|
||||
$smarty->assign("newrecords",$newrecords);
|
||||
|
||||
$tmp = array();
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM anrede")
|
||||
or $err=error("Fehler beim auslesen der Anreden:<br />". mysqli_error($dbconn));
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$tmp[$res["id"]] = $res["anrede"];
|
||||
}
|
||||
$smarty->assign("anr",$tmp);
|
||||
|
||||
$tmp = array();
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM titel")
|
||||
or $err=error("Fehler beim auslesen der Titel:<br />". mysqli_error($dbconn));
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$tmp[$res["id"]] = $res["titel"];
|
||||
}
|
||||
$smarty->assign("titel",$tmp);
|
||||
|
||||
$tmp = array();
|
||||
$qry = mysqli_query($dbconn,"SELECT name,typ,tel.id,nr,ort,ortsteil,plz,vwahl
|
||||
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"])."' ORDER BY typ_id ASC")
|
||||
or $err=error("Fehler beim auslesen der Telefonnummern:<br />". mysqli_error($dbconn));
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$tmp[] = $res;
|
||||
}
|
||||
$smarty->assign("telnrn",$tmp);
|
||||
|
||||
$tmp = array();
|
||||
$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")
|
||||
or $err=error("Fehler beim auslesen der Kontakte:<br />". mysqli_error($dbconn));
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$tmp[] = $res;
|
||||
}
|
||||
$smarty->assign("contacts",$tmp);
|
||||
|
||||
$tmp = array();
|
||||
$qry = mysqli_query($dbconn,"SELECT * FROM notiz WHERE partner_id='".mysql_escape_string($_GET["id"])."'")
|
||||
or $err=error("Fehler beim auslesen der Notizen:<br />". mysqli_error($dbconn));
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$tmp[] = $res;
|
||||
}
|
||||
$smarty->assign("notes",$tmp);
|
||||
|
||||
$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 plz, ortsteil, ort, str, hnr, vname, nname, vname2, nname2, firma, adresse.id, land, anrede_id, titel_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
|
||||
WHERE partner_id='".mysql_escape_string($_GET["id"])."'
|
||||
ORDER BY typ_id ASC") or $err=error("Fehler beim auslesen der Adressen:<br />". mysqli_error($dbconn));
|
||||
while($res=mysqli_fetch_assoc($qry))
|
||||
{
|
||||
$adressen[] = $res;
|
||||
}
|
||||
$smarty->assign("adressen",$adressen);
|
||||
|
||||
$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"] ="liefershow&id=".$_GET["id"];
|
||||
}
|
||||
}
|
||||
<?php
|
||||
require_once "incs/saveNchange.php";
|
||||
|
||||
partnerShowDaten($dbconn, $smarty, parameterGanzzahl("id"), 2);
|
||||
$_SESSION["camefrom"] = "liefershow&id=".parameterGanzzahl("id");
|
||||
$smarty->display("liefershow.tpl");
|
||||
?>
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user