Schrift
[thread]12582[/thread]

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

Leser: 27


<< |< 1 2 3 4 5 6 7 ... 11 >| >> 104 Einträge, 11 Seiten
Gast Chris
 2010-11-12 00:05
#142654 #142654
Hallo,

habe ich gemacht und es kommt folgende Fehlermeldung:

Parse error: syntax error, unexpected '?' in /WWWROOT/111111/htdocs/kontaktformular.php on line 196

Der neue Quelltext sieht dabei dann wie folgt aus:

Code: (dl )
1
2
3
4
5
6
7
//Formularfelder, die in $pruefung stehen,
//müssen in die oben definierten Muster passen
if(isset($pruefung[$parameter])) {
if(!preg_match($pruefung[$parameter], $wert)) {
$debug = bin2hex($wert);
die("DEBUG #$debug# ". '<br> Eingaben unzureichend - bitte gehen Sie zurück zum Feld ' . $parameter . ': ' . $wert);?
} else {


Gibt es irgendwo noch einen Programmierungsfehler?

Danke.

Gruß

Chris
Last edited: 2010-11-12 00:31:13 +0100 (CET)
renee
 2010-11-12 08:19
#142657 #142657
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja, da ist ein "?" am Ende der "die"-Zeile zuviel.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2010-11-12 09:20
#142660 #142660
User since
2005-01-17
14510 Artikel
Admin1
[Homepage]
user image
Zeile 6 deines Codes: Lösche mal das ? an Ende.
Entschuldige bitte. Ich weiß nicht wie das da rein kam als ich den Code hineinkopiert habe.
die Drachin, Gwendolyn


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

Gast Chris
 2010-11-12 19:21
#142689 #142689
...dann kommt folgende Fehlermeldung:

Parse error: syntax error, unexpected T_ELSE in /WWWROOT/11111/htdocs/kontaktformular.php on line 220

Was ist das nun?

Gruß

Chris
Last edited: 2010-11-12 19:23:22 +0100 (CET)
renee
 2010-11-12 19:24
#142690 #142690
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Poste mal den Code, den Du jetzt hast. Da ist warscheinlich irgendwas durch Cut'n'Paste durcheinandergeraten...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Chris
 2010-11-12 20:22
#142691 #142691
der lautet nun:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
//Gib Fehler und Warnungen aus
error_reporting(E_ALL);
//Deutschsprachige Umgebung, damit die
//regulären Ausdrücke auch Umlaute etc. erkennen
setlocale(LC_ALL, 'de_DE.UTF-8');
//Erzeuge einen zufällig aussehenden Zugangscode aus dem Datum ...
$code = chr((date("y") + 7) % 10 + date("m") + 68 + (date("m") % 2) * 32) . chr((date("d") + (date("d") %2)) / 2 + 66 + (37 * (date("d") %2)));
//... den der Anwender mittels verborgenem Eingabefeld übergibt.
//So lässt sich das Gros der skriptgesteuerten Angriffe von
//vornherein abblocken.
//Wurde das Formular abgeschickt?
//Falls ja: Daten prüfen und versenden
if(isset($_POST['los'])) {
if(!isset($_POST['code']) || $_POST['code'] != $code) die('Mailcode fehlt!');
//Liste der zu überprüfenden Formularfelder:
//'Absender' muss genau eine Mailadresse sein,
//'Betreff' ist ein mindestens drei Zeichen langer Text ohne Umbruch,
//'Text' muss zehn Zeichen lang sein.
$pruefung = array(
'Absender' => '/^ [\w.!#%&\*\/=\?\^\`\{\|\}\~+-]{1,64} \@
[[:alnum:].-]{1,255} \. [a-z]{2,6} $/xi',
//prüft auf gültige E-Mail-Adresse nach RFC 2822,
//erlaubt auch ungewöhnliche Adressen wie "{@heise.de";
//strengere Prüfung (erfordert z.B. mindestens 2 Zeichen vor @
//und im Domainnamen, schließt ungewöhnliche Adressen aus):
//'Absender' => '/^[\w.+-]{2,64}\@[\w.-]{2,255}\.[a-z]{2,6}$/',
'Betreff' => '/^[[:print:]]{3,}$/',
//restriktivere Variante:
//'Betreff' => '/^[[:alnum:]\s\?.!,;:\(\)\/\"-]{3,}$/',
'Text' => '/^[[:print:][:space:]]{10,}$/'
);
//Durchlaufe alle Formulardaten:
foreach($_POST as $parameter => $wert) {
//Formularfelder, die in $pruefung stehen,
//müssen in die oben definierten Muster passen
if(isset($pruefung[$parameter])) {
if(!preg_match($pruefung[$parameter], $wert)) {
$debug = bin2hex($wert);
die("DEBUG #$debug# ". '<br> Eingaben unzureichend - bitte gehen Sie zurück zum Feld ' . $parameter . ': ' . $wert);
} else {
//Der Rest wird weggeworfen.
unset($_POST[$parameter]);
}
}
//Prüfe, ob die Absenderadresse einem gültigen MX-Host angehört
//Zu jeder Domain in einer Mailadresse (nach dem @-Zeichen)
//sollte ein Mail Exchange Resource Record (MX-RR) im Domain Name
//System (DNS) eingetragen sein. Die MX-Hosts versenden die E-Mail
//per SMTP. getmxrr() schreibt MX-Hosts in das Array $mxhosts
//ACHTUNG: Dieser Befehl ist nur auf Unix-Maschinen implementiert,
//unter anderen Betriebssystemen ist die Zeile zu streichen!
//Außerdem scheint getmxrr() Probleme mit Umlautdomains zu haben.
if(!getmxrr(substr(strstr($_POST['Absender'], '@'), 1), $mxhosts)) die("Konnte keine gültige Domain für " . $_POST['Absender'] . " finden!");
//Die Formulardaten sind ok -- der Mailversand wird vorbereitet:
//mail() erwartet Empfänger, Betreff, Text und weitere Kopfdaten
if(mail('email@website.de', $_POST['Betreff'], $_POST['Text'], "From:" . $_POST['Absender'])) {
//Es hat geklappt: Bestätigung ausgeben
echo "<p>Nachricht von " . $_POST['Absender'] . " an website.de gesendet!</p>";
} else {
//Irgendwas ist schiefgelaufen :-(
echo "<p>Nachricht konnte nicht gesendet werden!</p>";
}
} else {
//Es wurden keine Formulardaten übergeben ->
//Gib einen HTML-Block mit dem Formular aus.
?>


Gruß

Chris
Last edited: 2010-11-12 20:25:18 +0100 (CET)
AndiE
 2010-11-12 23:10
#142692 #142692
User since
2010-10-24
65 Artikel
BenutzerIn
[default_avatar]
In Zeile 67 fehl eine '}'
Gast Chris
 2010-11-13 00:40
#142693 #142693
... habe das Zeichen } wie geschildert beigefügt:
Code: (dl )
1
2
3
4
5
  }
} else {
//Es wurden keine Formulardaten übergeben ->
//Gib einen HTML-Block mit dem Formular aus.
?>}

und trotzdem folgenden Fehler angezeigt bekommen:
Parse error: syntax error, unexpected T_ELSE in /WWWROOT/11111/htdocs/kontaktformular.php on line 220

Chris
Last edited: 2010-11-13 01:06:45 +0100 (CET)
Gast wer
 2010-11-13 03:14
#142695 #142695
nicht
Code: (dl )
1
2
3
4
5
 }
} else {
//Es wurden keine Formulardaten übergeben ->
//Gib einen HTML-Block mit dem Formular aus.
?>}

sondern
Code: (dl )
1
2
3
4
5
 }
} else {
//Es wurden keine Formulardaten übergeben ->
//Gib einen HTML-Block mit dem Formular aus.
}?>

Last edited: 2010-11-13 03:35:17 +0100 (CET)
Gast Chris
 2010-11-13 10:51
#142698 #142698
..hier kommt die gleiche Fehlermeldung. Egal ob } vor oder nach dem ?> steht.

Was nun?

Gruß

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



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