Formulare vernünftig auswerten

Tommy57

Erfahrenes Mitglied
Hi,

ich habe ständig das Problem, dass bei Formularen, die ich via AJAX verarbeite, diverse Komplikationen auftreten.

Zum Beispiel werden Umlaute und Sonderzeichen unlesbar, oder Strings aus der Datenbank als Text korrekt, aber in Formularfeldern falsch angezeigt. Textareainhalte verlieren ihre Umbrüche. Strings die Gänsefüßchen oder Hochkommas enthalten führen teilweise zu Javascript Abstürzen. Wenn ich eingetippte Wörter mit Umlauten in einem Array suche, bekomme ich ständig false zurück, egal wie ich die Umlaute im Array schreibe.

Ich wollte es vermeiden, hier dutzende Beispiele mit Codebeispielen aufzuzählen. Deswegen frag ich allgemein, ob jemand ein sehr gutes Tutorial für vernünftige Formularauswertung kennt, oder mir erklären kann:

- welche Zeichenkodierung ich benutzen sollte
- ob ich die Formularfelder/Textareas, vor dem Absenden mit JavaScript bearbeiten muss
- wie ich die Variablen in der Ajax-Datei einlesen muss
- und wie ich sie wieder zurücksenden muss.

Momentan arbeite ich mit
- charset='ISO-8859-1',
- beim absenden mit encodeURIComponent(value) bzw. bei Textareas zusätzlich
value.replace(/\r\n|\n|\r/gi,'<br>') um die Umbrüche nicht zu verlieren
- beim einlesen mit htmlspecialchars(trim(utf8_decode($_POST['value'])))
- beim zurück senden in ein Formularfeld mit html_entity_decode() und bei Textareas zusätzlich vor der Ausgabe value.replace(/<br>/gi, '\r\n') um die Umbrüche wieder herzustellen

Ich bin dankbar für jede Hilfe.

Gruß
Tommy
 
Zuletzt bearbeitet:
Ich gehe mal davon aus das du die Formulardaten in einer PHP - Datei verarbeitest.
Also um das Problem mit den umlauten zu beheben musst du folgenden header setzen:

PHP:
header("Content-type: text/html; charset=ISO-8859-1");
 
Danke misterbasti,

jo, das hatte ich schon so. Hab ja oben geschrieben, dass ich charset='ISO-8859-1' verwende. Es geht nicht um die einzelnen Probleme, die krieg ich alle gelöst. Es geht mehr um eine elegante Lösung Formulare jeder Art vernünftig auszuwerten. Meine Variante halte ich eher für sehr umständlich.
 
Okay dir hat keiner mehr geantwortet... ^^
Weis ja nicht ob das hier noch zur Debatte steht weil ist ja schon etwas her,
aber ich antworte jetz mal trotzdem. ;)

Zeilenumbrüche gehen nicht wirklich verlohren, du kannst dir dieses "umwandeln" / "retten"
sparen, jedenfalls bei der ausgabe über PHP.
Wenn du den Text aus einem Textarea mittels PHP in einem HTML Element ausgibst,
musst du dafür nur die Funktion nl2br verwenden.
Wenn du es wieder ins Texfeld haben möchtest gibst du es ohne zusatzfunktionen aus.

Wenn du Daten ausließt und sendest dann solltest
du die Funktion escape benutzen.

z.B.
Code:
var text = escape( document.getElementById("text").value );

htmlspecialchars(trim(utf8_decode($_POST['value'])))
htmlspecialchars nur dann wenn du etwas in ein nicht Textfeld ausgibst.
trim() und utf8_decode() brauchst du im Grunde auch nicht.

mysql_real_escape_string() wenn du etwas in die Datenbank speicherst.
Dann kann es nur noch mit "magic_quotes" zu Problemen kommen.

Naja ich könnte dir da genauer antworten wenn ich wüsste wie und wo du
was ausgibst, sendest usw.

Aber ich denke so ist das ertmal genug. ^^
 
Hi misterbasti,

ja ist schon länger her. Hab mein Stil schon etwas weiter entwickelt^^

Ich arbeite aktuell mit UTF-8 und wende auf die Formular-Values encodeURIComponent an, bevor ich sie per AJAX an der Server sende.
Das Problem mit den Textareas habe ich auch mit dem nl2br gelöst und das klappt hervorragend.

Also auf diese Weise habe ich beisher keine Probleme mehr entdecken können und auch Symbole wie das UND-Zeichen und Hochkommas erzeugen keine Fehler mehr.

Danke^^
 
Zurück