HTML Fehlermeldung ausgeben. Ich möchte bei besimmten Zeicheneingabe ,eine Fehlermeldung ausgegeben
#1
geschrieben 10. Dezember 2019 - 14:28
ich habe eine HTML, auf der ich Dienstautos buchen kann. Dafür gebe ich in eine Maske alle erforderlichen Daten, wie Name und Datum der Buchung ein. Die Maske hat einen Punkt der sich "Maßnahme" nennt, wenn man dort in die Zeile etwas eingibt was ein ' beinhaltet und ich den Rest ausfülle und abspeichere, zeigt mir die Seite eine erfolgreiche Buchung an. Gehe ich jedoch auf die Liste der gebuchten Autos wird dieses nicht angezeigt. Gebe ich jedoch anstatt ein ' gleich zwei hintereinander an, so speichert er es mir ab.
Meine Frage ist nun, ist es möglich, wenn jemand ein Auto buchen möchte und in der Spalte "Maßnahme" etwas mit einem ' eingibt das er es entweder speichert oder mir eine Fehlermeldung ausgibt.
Ich bedanke mich jetzt schonmal für eure Hilfe.
Mit freundlichen Grüßen
Booster123!
Anzeige
#2
geschrieben 10. Dezember 2019 - 14:49
#3
geschrieben 10. Dezember 2019 - 19:54
Ansonsten könnte man übergangsweise versuchen, die ' durch ' zu ersetzen.
Dieser Beitrag wurde von Holger_N bearbeitet: 10. Dezember 2019 - 19:54
#4
geschrieben 11. Dezember 2019 - 01:03
Ansonsten müsste das mit ' aber funktionieren. Einfach im String ' durch ' ersetzen lassen und mal prüfen (lassen) ob da nicht eine kleine Sichegheitslücke eingebaut ist, falls sich der Query tatsächlich wie vermutet manipulieren lässt.
#5
geschrieben 11. Dezember 2019 - 04:29
#6
geschrieben 11. Dezember 2019 - 10:25
Ja der Code ist mit PHP geschrieben. Richtig ich gehe davon aus das durch das Hochkomma ein neuer String entsteht bzw die Datei denkt, dass nun ein String entsteht.
Wie implementiere bzw ersetze ich denn " ' durch ' " ?
Bei Maßnahme wird eingetragen, wofür man das Dienstfahrzeug nutzt, also zB "Michael's Lehrgang". Es muss also ein manuell eintragbares Feld bleiben, wobei ich nicht verlangen kann das jeder bei einem ' dann ' eingeben muss.
Ist es denn möglich es in die PHP Datei zu implementieren, sodass er nicht denkt das es ein String ist, sondern es als normales Sonderzeichen behandelt und übernimmt?
Vielen Dank Leute.
MfG
Booster123!
#7
geschrieben 11. Dezember 2019 - 12:17
Ich bin in PHP etwas eingerostet, aber hiermit sollte es zu machen sein:
https://www.php.net/...str-replace.php
Bzw. mit einer anderen Funktion suchst du das ' Zeichen und gibst dem Anwender eine Meldung aus, dass es sich um ein nicht genehmigtes Zeichen in der Eingabe handelt.
Dieser Beitrag wurde von Stef4n bearbeitet: 11. Dezember 2019 - 12:18
#8
geschrieben 11. Dezember 2019 - 13:59
str_replace('\'',''',$string);
wobei $string die zu verarbeitende Zeichenkette ist, also da die Variable rein muß, die im richtigen Script verwendet wird oder mit
if ( strstr($string, '\'', true) ) { // Fehlerabarbeitung } else { // Datenbankeintrag }
nur nach einem Apostroph suchen und entscheiden, ob ein Eintrag gemacht oder ein Fehler ausgegeben wird.
Aber wie gesagt, dass das Apostroph das Ganze beeinflusst, lässt darauf schließen, dass möglicherweise der vom Benutzer eingegebene Text, 1:1 in den Query übernommen wird. Das wäre nicht gut und eröffnet Manipulationsmöglichkeiten.
#9
geschrieben 13. Dezember 2019 - 11:56

Ich werde mich mal mit euren Ideen auseinandersetzen und schreibe sobald es geklappt hat

#10
geschrieben 13. Dezember 2019 - 15:39
#11
geschrieben 13. Dezember 2019 - 15:58
#12
geschrieben 13. Dezember 2019 - 19:45
Beispiel:
INSERT INTO dummytable (column1, column2) VALUES ('nichts', 'garnichts');
Beinhaltet also der String selbst einen Apostroph der nicht entsprechend maskiert wurde, dann geht die DB davon aus, dass der Befehl an dem Punkt zu Ende ist und der Query erzeugt entweder einen Fehler oder produziert schlimmeres.
Beispiel:
INSERT INTO dummytable (column1, column2) VALUES ('nichts', 'gar'nichts');
(hier wäre der Befehl nach gar zu Ende)
Wenn man ' und " unbedingt als Eingabe erlauben will, dann gibt es verschiedene Möglichkeiten:
- man kann bereits während der Eingabe den Apostroph doppelt schreiben: '' Das wird dann in der DB zu einem ' verlassen würd ich mich auf die Methode aber nicht und ob es auch bei " funktioniert kann ich nicht sagen
- man kann den eingegeben String escapen bevor er in den Query übernommen wird, um zu escapen gibt es den PHP Befehl addslashes oder man nutzt mysqli_real_escape_string für eine sql Datenbank wie mysql, mariadb etc.
- man kann ' und " im String durch DB Befehle wie CHAR oder ASCII maskieren
- es gibt weitere Befehle direkt für Datenbanken wie STRING_ESCAPE oder MYSQL_QUOTE
Insgesamt hat man mehrere Möglichkeiten einen String mit ' oder " in Datenbanken zu schreiben ohne dabei einen QUERY Fehler zu erzeugen.
Dieser Beitrag wurde von Gispelmob bearbeitet: 13. Dezember 2019 - 19:51
#13
geschrieben 14. Dezember 2019 - 16:50
#14
geschrieben 09. Januar 2020 - 15:28
vielen Dank für eure zahlreichen Antworten.
Ehrlich gesagt war ich die letzten Wochen krank und habe mich nicht mehr an das Projekt setzten können. Dies wird ab nächste Woche jedoch wieder der Fall sein. Bis jetzt konnte ich auch leider nichts mit euren Antworten anfangen. Sobald ich mich daran gesetzt habe, werde ich euch mein Ergebnis mitteilen.
vielen dank noch einmal
Gruß
Booster 123!