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:
+15
-13
@@ -7,8 +7,8 @@ function ajax_searchkunden(page)
|
||||
search_in_progress = 1;
|
||||
document.getElementById("kdnsrc_list").innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
|
||||
//document.getElementById("kdnsrc_src").disabled = true;
|
||||
field = escape(document.getElementById("kdnsrc_field").value);
|
||||
search = escape(document.getElementById("kdnsrc_src").value);
|
||||
field = encodeURIComponent(document.getElementById("kdnsrc_field").value);
|
||||
search = encodeURIComponent(document.getElementById("kdnsrc_src").value);
|
||||
|
||||
var url = "ajax/searchkunden.php?field=" + field + "&page=" + page + "&search=" + search;
|
||||
reqkdnsrc = new XMLHttpRequest();
|
||||
@@ -35,7 +35,7 @@ function ajax_searchzeit(page,user)
|
||||
search_in_progress = 1;
|
||||
document.getElementById("termcontainer-"+user).innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
|
||||
//document.getElementById("kdnsrc_src").disabled = true;
|
||||
search = escape(document.getElementById("zeit_src-"+user).value);
|
||||
search = encodeURIComponent(document.getElementById("zeit_src-"+user).value);
|
||||
|
||||
var url = "ajax/searchzeit.php?page=" + page + "&user=" + user + "&search=" + search;
|
||||
reqkdnsrc = new XMLHttpRequest();
|
||||
@@ -55,15 +55,17 @@ function ajax_searchzeit(page,user)
|
||||
}
|
||||
}
|
||||
|
||||
function ajax_searchadress(rechid,subact,page)
|
||||
// page zuerst, damit die Seitenschaltung (displayPages) die Nummer
|
||||
// als erstes Argument uebergeben kann - wie bei den anderen Suchen
|
||||
function ajax_searchadress(page,rechid,subact)
|
||||
{
|
||||
if(!search_in_progress)
|
||||
{
|
||||
search_in_progress = 1;
|
||||
document.getElementById("adrsrc_list").innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
|
||||
//document.getElementById("kdnsrc_src").disabled = true;
|
||||
field = escape(document.getElementById("adrsrc_field").value);
|
||||
search = escape(document.getElementById("adrsrc_src").value);
|
||||
field = encodeURIComponent(document.getElementById("adrsrc_field").value);
|
||||
search = encodeURIComponent(document.getElementById("adrsrc_src").value);
|
||||
|
||||
var url = "ajax/searchadress.php?field=" + field + "&page=" + page + "&search=" + search + "&rechid=" + rechid + "&subact=" + subact;
|
||||
reqadrsrc = new XMLHttpRequest();
|
||||
@@ -90,8 +92,8 @@ function ajax_searchliefer(page)
|
||||
search_in_progress = 1;
|
||||
document.getElementById("kdnsrc_list").innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
|
||||
//document.getElementById("kdnsrc_src").disabled = true;
|
||||
field = escape(document.getElementById("kdnsrc_field").value);
|
||||
search = escape(document.getElementById("kdnsrc_src").value);
|
||||
field = encodeURIComponent(document.getElementById("kdnsrc_field").value);
|
||||
search = encodeURIComponent(document.getElementById("kdnsrc_src").value);
|
||||
|
||||
var url = "ajax/searchliefer.php?field=" + field + "&page=" + page + "&search=" + search;
|
||||
reqkdnsrc = new XMLHttpRequest();
|
||||
@@ -118,7 +120,7 @@ function ajax_searchkdnprojects(page,kdnid)
|
||||
search_in_progress = 1;
|
||||
document.getElementById("projectlist").innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
|
||||
//document.getElementById("kdnsrc_src").disabled = true;
|
||||
search = escape(document.getElementById("src_project").value);
|
||||
search = encodeURIComponent(document.getElementById("src_project").value);
|
||||
|
||||
var url = "ajax/searchkdnprojects.php?page=" + page + "&search=" + search+"&kdnid=" + kdnid;
|
||||
|
||||
@@ -173,7 +175,7 @@ function ajax_searchkomm(page,kdnid)
|
||||
search_in_progress = 1;
|
||||
document.getElementById("kommsrc_list").innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
|
||||
//document.getElementById("kdnsrc_src").disabled = true;
|
||||
search = escape(document.getElementById("kommsrc_src").value);
|
||||
search = encodeURIComponent(document.getElementById("kommsrc_src").value);
|
||||
|
||||
var url = "ajax/searchkomm.php?page=" + page + "&search=" + search+"&kdnid=" + kdnid;
|
||||
|
||||
@@ -181,7 +183,7 @@ function ajax_searchkomm(page,kdnid)
|
||||
reqkommsrc.open("GET", url, true);
|
||||
reqkommsrc.onreadystatechange = function()
|
||||
{
|
||||
if(reqkdnsrc.readyState == 4)
|
||||
if(reqkommsrc.readyState == 4)
|
||||
{
|
||||
// Get the data from the server's response
|
||||
document.getElementById("kommsrc_list").innerHTML = reqkommsrc.responseText;
|
||||
@@ -226,7 +228,7 @@ function ajax_searchterm(page, termtyp)
|
||||
{
|
||||
search_in_progress = 1;
|
||||
document.getElementById("termcontainer-"+termtyp).innerHTML = "<p><img src='pics/progress_white.gif' /></p>";
|
||||
search = escape(document.getElementById("term_src-"+termtyp).value);
|
||||
search = encodeURIComponent(document.getElementById("term_src-"+termtyp).value);
|
||||
|
||||
var url = "ajax/searchterm.php?page=" + page + "&search=" + search + "&termtyp=" + termtyp;
|
||||
|
||||
@@ -276,7 +278,7 @@ function ajax_displaymsgs(page,user)
|
||||
}
|
||||
function sendmsg(touser)
|
||||
{
|
||||
msg = escape(document.getElementById("message-"+touser).value);
|
||||
msg = encodeURIComponent(document.getElementById("message-"+touser).value);
|
||||
var url = "ajax/sendmsg.php?touser="+touser+"&msg="+msg;
|
||||
reqsndmsgs = new XMLHttpRequest();
|
||||
reqsndmsgs.open("GET", url, true);
|
||||
|
||||
Reference in New Issue
Block a user