Schrift
[thread]12582[/thread]

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

Leser: 27


<< |< 1 ... 4 5 6 7 8 9 10 11 >| >> 104 Einträge, 11 Seiten
GwenDragon
 2010-11-20 10:56
#142900 #142900
User since
2005-01-17
14538 Artikel
Admin1
[Homepage]
user image
Zeile 6 kann (vielleicht?) nicht stimmen:
Code: (dl )
setlocale(LC_ALL, 'de_DE.UTF-8');


Auf meinem Linux-System gibt es für deutsch nur folgende

[us1@svr2 ~]# locale -a | grep de_
de_AT
de_AT.utf8
de_AT@euro
de_BE
de_BE.utf8
de_BE@euro
de_CH
de_CH.utf8
de_DE
de_DE.utf8
de_DE@euro
de_LU
de_LU.utf8
de_LU@euro
[us1@svr2 ~]#


Deswegen sollte es (vielleicht) so heißen:
Code: (dl )
setlocale(LC_ALL, 'de_DE.utf8');


Teste das mal mit dem neuen Code!

//EDIT: Die POSIX-Zeichenklasse print sollte doch laufen, jedenfalls die Shell macht es:
[usr1@svr1 ~]# echo 'abcdefäöüÄÖÜß .,;µ&$!"' | LC_ALL=de_DE.utf8 grep -o '[[:print:]]'
a
b
c
d
e
f
ä
ö
ü
Ä
Ö
Ü
ß

.
,
;
µ
&
$
!
"
[usr1@svr1 ~]#

Last edited: 2010-11-20 11:10:06 +0100 (CET)
die Drachin, Gwendolyn


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

Gast Chris
 2010-11-20 11:20
#142901 #142901
...leider nein.

Folgende Fehlermeldung:
DEBUG #44696573206973742065696e206772c3b6c39f657265722054657374#
Eingaben unzureichend - bitte gehen Sie zurück zum Feld Betreff: Dies ist ein größerer Test

Chris
Last edited: 2010-11-20 11:38:49 +0100 (CET)
GwenDragon
 2010-11-20 11:45
#142902 #142902
User since
2005-01-17
14538 Artikel
Admin1
[Homepage]
user image
Ich habe mal lokal auf meinem Linux getestet mit folgendem PHP-Skript, da funktioniert das mit preg_match nicht, egal wie. Also ob /u oder nicht beim Regex.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
error_reporting(E_ALL);
print "LC_ALL gesetzt auf " . setlocale(LC_ALL, 'de_DE.utf8');

$pruefung = array(
'Text' => '/^[[:print:]]{10,}$/u'
);
$text = 'äöüßÄÖÜßABCDEF /&%"!';

if (!preg_match($pruefung['Text'], $text)){
die($text . '#?????#');
}
else {
print 'Alles ok!';
}
?>
die Drachin, Gwendolyn


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

Gast Chris
 2010-11-20 11:53
#142903 #142903
...und was könnte man machen, um dies trotzdem zum Laufen zu bringen? Wäre ja echt schade wenn das Kontaktformular für iso-8859-1 funktioniert und für UTF-8 nicht, oder?

Gruß

Chris
Last edited: 2010-11-20 12:08:08 +0100 (CET)
GwenDragon
 2010-11-20 12:21
#142904 #142904
User since
2005-01-17
14538 Artikel
Admin1
[Homepage]
user image
Keine Ahnung. Das scheint ein spezielles PHP-Problem zu sein. Ich habe schon versucht was zu ergoogeln, keine Lösung gefunden.
Es könnte sein, dass PHP so kompiliert wurde, dass die Regex-Bibliothek PCRE mit UTF8 nicht funktioniert.

Wenn du versuchst, die erlaubten Zeichen als selbstdefinierte Klasse einzutragen.
Was soll denn als Text erlaubt sein? Nur deutsche Zeichen?
Dann wäre das richtig:
Code: (dl )
'Text' => '/^[\x0D\x0A\x09\x20-\x7EäöüÄÖÜß]{10,}$/u'
die Drachin, Gwendolyn


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

Gast Chris
 2010-11-20 12:49
#142905 #142905
...dies sieht doch schon einmal gut aus. Der "Text" ist damit durchgelaufen, aber noch nicht der "Betreff". Wie müsste ich diesen verändern?

Danke.

Chris

PS: Ich dachte UTF-8 ist der neue Standard? Damit dürfte doch so ein PHP Kompilierungsproblem von Anfang an berücksichtigt werden, oder?
GwenDragon
 2010-11-20 12:57
#142906 #142906
User since
2005-01-17
14538 Artikel
Admin1
[Homepage]
user image
Code: (dl )
'Betreff' => '/^[\x20-\x7EäöüÄÖÜß]{3,}$/u'


Das ist nicht der neue Standard, sondern einer von vielen. ;)
Inweiweit bei PHP was einkompiliert wurde, hängt von den Entwicklern bzw. den Paketbetreuern des jeweiligen Betriebssystems zusammen.

Wenn du genaues zu PHP wissen willst, ist vielleicht ein PHP-Forum bei deiner speziellen Frage auch sinnvoll.
die Drachin, Gwendolyn


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

Gast Chris
 2010-11-20 13:27
#142907 #142907
Hallo GwenDragon und alle anderen Supporter,

nach fast 70 Einträgen funktioniert nun das Kontaktformular wieder mit Umlauten und Sonderzeichen - deshalb noch einmal vielen Dank für die große Unterstützung.

Gruß

Chris
Last edited: 2010-11-20 13:47:57 +0100 (CET)
Gast Chris
 2010-11-20 14:25
#142908 #142908
Hallo,

nun habe ich doch noch ein Problem als ich die Test E-Mail über Outlook erhalten habe.
Diese sieht wie folgt aus:

Betreff: Dies ist ein größerer Test!
Dies ist ein größerer Test!

Was muß man machen, um hier auch eine richtige Darstellung zu erzielen?

Gruß

Chris
Last edited: 2010-11-20 14:27:00 +0100 (CET)
GwenDragon
 2010-11-20 16:03
#142909 #142909
User since
2005-01-17
14538 Artikel
Admin1
[Homepage]
user image
Da fehlt die Kodierungsangabe des Mails.
Ich hoffe, das reicht.

Ersetze Zeile 68
Code: (dl )
if(mail('email@website.de', $_POST['Betreff'], $_POST['Text'], "From:" . $_POST['Absender'])) {

druch
Code: (dl )
1
2
3
4
5
6
7
if( mail('email@website.de', 
mb_encode_mimeheader($_POST['Betreff'], "UTF-8", "Q"),
$_POST['Text'],
'From: ' . mb_encode_mimeheader($_POST['Absender'], "UTF-8", "Q") . "\n"
. 'Content-Type: text/plain; charset="utf-8"' . "\n"
. 'Content-Transfer-Encoding: 8bit' )
) {


//EDIT: falsche Kodierfunktion korrigiert (wenig PHP gemacht in letzer Zeit!).

Ich hoffe, dass bei dir diese Erweiterung in PHP auch aktiv ist.
Ich empfehle von PEAR das PHP-Package Mail zu installieren, PHPs eigene function Mail ist nicht so einfach, wenn das Mail komplexer wird.
Last edited: 2010-11-20 16:18:05 +0100 (CET)
die Drachin, Gwendolyn


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

<< |< 1 ... 4 5 6 7 8 9 10 11 >| >> 104 Einträge, 11 Seiten



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