Schrift
[thread]12582[/thread]

[php] Problem mit Formularfelderüberprüfung und UTF-8 (Seite 2) [gelöst]

Leser: 27


<< |< 1 2 3 4 5 ... 11 >| >> 104 Einträge, 11 Seiten
Tom
 2008-10-12 21:33
#115428 #115428
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Dubu+2008-10-12 19:25:44--
Damit Umlaute und Esszett erlaubt sind, muss die passende Locale im OS gesetzt sein und in Perl benutzt werden (use locale). Ich weiß nicht, wie das bei PHP ist.


Die locale wird ja gesetzt siehe Code, nur funktioniert das trotzdem nicht. Wie kann man denn überprüfen ob die Ordnungsgemäß gesetzt wurde?


Tom+2008-10-04 12:02:11--
[php]
//Deutschsprachige Umgebung, damit die
//regulären Ausdrücke auch Umlaute etc. erkennen
setlocale(LC_ALL, 'de_DE');
....
'betreff' => '/^[[:print:]]{3,}$/',
'text' => '/^[[:print:][:space:]]{10,}$/'
...
[/php]


Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Tom
 2008-10-29 00:50
#115804 #115804
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,

Ich weiß jetzt warum das Script die ganze Zeit nicht so funktioniert hat wie gewünscht.

Das Problem lag daran das ich das Script mit der Zeichenkodierung "UTF-8" und nicht mit der Zeichenkodierung "ISO 8859-1" ausgeführt habe. Bei "UTF-8" wird das ß in einer anderen Bitfolge an den Server geschickt und somit wird kein gültiges Zeichen erkannt.

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Gast Gast
 2008-10-29 10:12
#115812 #115812
Tom+2008-10-28 23:50:31--
Das Problem lag daran das ich das Script mit der Zeichenkodierung "UTF-8" und nicht mit der Zeichenkodierung "ISO 8859-1" ausgeführt habe. Bei "UTF-8" wird das ß in einer anderen Bitfolge an den Server geschickt und somit wird kein gültiges Zeichen erkannt.

Wie meinst du das? Deine Webseite, in der das Formular drin ist, hatte die im Metat-Tag bei Charset UTF-8 oder ISO-8859-1? Oder hast du auf deiner Webseite kein definiertes Charset mitgegeben? Oder hast du einfach gedacht, das passt schon?

Der Server sendet jedenfalls das bei der Installation voreingestellte; ist meist UTF-8 bei den modernen Versionen des Apache).

Du hättest leicht überprüfen können, was dein Formular sendet.
Bei Firefox gibt es die Erweiterung "Live HTTP Headers".
Tom
 2008-11-02 22:44
#115906 #115906
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Gast+2008-10-29 09:12:23--
Wie meinst du das? Deine Webseite, in der das Formular drin ist, hatte die im Metat-Tag bei Charset UTF-8 oder ISO-8859-1?


Das Charset war auf UTF-8 eingestellt.

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Gast Chris
 2010-11-04 00:30
#142454 #142454
Mein Server Default Charset läuft auf UTF-8
Im php-Kontaktformular habe ich <meta http-equiv="content-type" content="text/html; iso-8859-1"> eingefügt.
Trotzdem kommt es bei der Eingabe von einem scharfen ß und Umlauten zu einer Fehlermeldung "Eingaben unzureichend - bitte gehen Sie zur�ck zum Feld Betreff:"

Was muß ich machen so, dass das Kontaktformular durchläuft und die Nachricht übermittelt?

Chris
Last edited: 2010-11-04 00:38:54 +0100 (CET)
GwenDragon
 2010-11-04 09:29
#142455 #142455
User since
2005-01-17
14533 Artikel
Admin1
[Homepage]
user image
Guest Chris
Mein Server Default Charset läuft auf UTF-8
Im php-Kontaktformular habe ich <meta http-equiv="content-type" content="text/html; iso-8859-1"> eingefügt.
Trotzdem kommt es bei der Eingabe von einem scharfen ß und Umlauten zu einer Fehlermeldung "Eingaben unzureichend - bitte gehen Sie zur�ck zum Feld Betreff:"

Was muß ich machen so, dass das Kontaktformular durchläuft und die Nachricht übermittelt?
Im HTML des Kontaktformular hat dann aber das Meta-Element so wie
Code: (dl )
<meta http-equiv="content-type" content="text/html; iso-8859-1"> 
mit einem falschen Charset nix zu suchen.

Wenn schon, dann korrekterweise so:
Code: (dl )
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 

Zudem ist das ganze Meta-Element unnötig, wenn dein Server doch UTF-8 und den korrekten MIME-Type ausgibt.

Quote
Trotzdem kommt es bei der Eingabe von einem scharfen ß und Umlauten zu einer Fehlermeldung "Eingaben unzureichend - bitte gehen Sie zur�ck zum Feld Betreff:"
Dannn könnte deine Fehlerüberprüfung der Eingabefelder falsch sein (z. B. durch falsches Regex, falschen Skript-Zeichensatz).
Last edited: 2010-11-04 09:34:02 +0100 (CET)
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Gast Chris
 2010-11-04 22:00
#142484 #142484
Quote
Dannn könnte deine Fehlerüberprüfung der Eingabefelder falsch sein (z. B. durch falsches Regex, falschen Skript-Zeichensatz).


Genau das ist wahrscheinlich der Fall. Wie kann ich dies denn abstellen? Was muß ich genau machen? Was heißt durch falsches Regex oder falsches Skript-Zeichensatz? Ich bin doch serverseitig in UTF-8, muß ich darüber hinaus noch etwas weiteres einstellen?
Danke für die Rückinfo.
Chris
PS: Das meta tag charset habe ich ebenfalls entfernt.
Last edited: 2010-11-04 22:10:22 +0100 (CET)
bianca
 2010-11-05 08:06
#142486 #142486
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
Du musst genau das machen, was GwenDragon geschrieben hat.
Den richtigen charset UTF-8 angeben.

Ich verstehe Deine Formulierung sowieso nicht.
Du schreibst, Dein Server läuft auf UTF-8, Du hättest als charset ISO angegeben und TROTZDEM läuft es nicht. Wieso TROTZDEM? Natürlich läuft es nicht, das sind ja auch zwei paar schuhe. Es läuft vielmehr GENAU DESHALB nicht :)

Ergänzung zum Verständnis: Der charset gibt immer an, wie er ANKOMMEN soll.
Last edited: 2010-11-05 08:42:05 +0100 (CET)
10 print "Hallo"
20 goto 10
GwenDragon
 2010-11-05 09:39
#142487 #142487
User since
2005-01-17
14533 Artikel
Admin1
[Homepage]
user image
Guest Chris
Im php-Kontaktformular habe ich <meta http-equiv="content-type" content="text/html; iso-8859-1"> eingefügt.
Dann entferne das fehlerhafte
Code: (dl )
<meta http-equiv="content-type" content="text/html; iso-8859-1"> 
aus dem PHP oder verwende korrekterweise:
Code: (dl )
<meta http-equiv="content-type" content="text/html; charset=UTF-8">


Guest Chris
Was heißt durch falsches Regex oder falsches Skript-Zeichensatz?

a) Falsches Regex:
Deine PHP-Skript verwendet doch irgendeinen Code, der auf gültige Eingaben prüft. Da sind Regularexpressions drin oder sonstwas.
b) falscher Skript-Zeichensatz:
Du hast dein PHP als ANSI-codiert (und nicht als UTF-8) abgespeichert und irgendwelche Sonderzeichen drin.
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Gast Chris
 2010-11-05 21:27
#142503 #142503
...jetzt verstehe ich es gar nicht mehr.

- Mein Server Charset ist auf utf-8 eingestellt
- Ich habe mein php Kontaktformular mit Notepad++ in UTF8 ohne BOM umgewandelt
- Ich habe zusätzlich noch
Code: (dl )
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
in den php Quelltext eingefügt.
- Dann das ganze mit FileZilla erneut hochgeladen

Ergebnis:
Die Umlaute werden nun korrekt angezeigt, aber bei einer Eingabe von Umlauten und scharfem ß in die Felder Betreff oder Text kommt erneut die Fehlermeldung: Eingaben unzureichend - bitte gehen Sie zurück zum Feld Betreff: Alles wird größer

Eigentlich ist nun alles richtig und trotzdem funktioniert es nicht.

Hilfe möglich?

Danke

Chris
Last edited: 2010-11-05 21:29:10 +0100 (CET)
<< |< 1 2 3 4 5 ... 11 >| >> 104 Einträge, 11 Seiten



View all threads created 2008-10-04 14:02.