Rechnungen: Betraege mit Tausenderpunkt, XSS in Templates und Suche
- formularZahl(): steht ein Komma im Betrag, sind Punkte Tausendertrenner
("1.234,50" -> 1234.50, vorher 1.23); ohne Komma bleibt der Punkt
Dezimaltrenner wie bei der Artikel-Autovervollstaendigung ("12.50").
- Rechnungs-Templates (addrechnung, mailrechnung, changeadr, copyrech,
umschlagshow, rechshow) geben alle Daten mit |escape aus; Werte aus der
URL (id, type, newtype) als int.
- Rechnungssuche: Artikelnamen werden escaped statt als HTML ausgegeben
(Trennung per Zeilenumbruch in SQL, artikelListeHtml() in PHP).
- Suchbegriffe kommen per encodeURIComponent als UTF-8, utf8_encode()
entfaellt; vorher gingen Zeichen ausserhalb von Latin-1 verloren.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+8
-3
@@ -12,12 +12,17 @@ function formularText($name)
|
||||
}
|
||||
|
||||
/*
|
||||
* Zahl aus $_POST, Komma als Dezimaltrenner. Leere oder ungültige Eingaben
|
||||
* werden 0 - so hat sie der frühere, nicht strikte Modus gespeichert.
|
||||
* Zahl aus $_POST in deutscher Schreibweise. Steht ein Komma darin, ist es
|
||||
* der Dezimaltrenner und Punkte sind Tausendertrenner ("1.234,50"). Ohne
|
||||
* Komma gilt ein Punkt als Dezimaltrenner ("12.50", so liefert ihn die
|
||||
* Artikel-Autovervollständigung). Leere oder ungültige Eingaben werden 0 -
|
||||
* so hat sie der frühere, nicht strikte Modus gespeichert.
|
||||
*/
|
||||
function formularZahl($name)
|
||||
{
|
||||
$wert = str_replace(",", ".", formularText($name));
|
||||
$wert = str_replace(" ", "", formularText($name));
|
||||
if(str_contains($wert, ","))
|
||||
$wert = str_replace(array(".", ","), array("", "."), $wert);
|
||||
return is_numeric($wert) ? $wert : "0";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user