Immerhin ein neuer Fehler :) Und der kommt von einem falschen regulären Ausdruck. Und zwar testet der nur, ob mindestens ein beliebiges Zeichen (einschließlich Leerzeichen) vor und nach einem @ stehen. Abschließen muss die Zeichenkette laut dem Muster mit mehreren Zeichen nach einem Punkt, was an sich nicht unbedingt falsch ist. Aber leider sind Regexe gierig, so dass .+ bzw .* so viele Zeichen matched, wie möglich. Der Teil "\..+" wird also niemals erreicht.
Wohl ein bisschen verguckt. Am Regex liegt es nicht. :conf:
für einen funktionierenden Ausdruck müsste man also dafür sorgen, dass .+ nicht gierig ist:
[code=pseudo]^.+@.+?\\..+$
[/code]
Wodurch der RegEx allerdings dennoch falsche E-Mail Adressen als richtig anerkennen kann.
Ein etwas strengerer Ausdruck wäre etwas in der Art:
[code=pseudo]/^\w+@\w+?\.[a-zA-Z]{2,3}$/
[/code]
Um alle E-Mail Adressen korrekt nach RFC-2822 zu validieren ist allerdings deutlich mehr Aufwand notwendig. Der Regex kann dabei mehrere DinA4-Seiten lang sein, je nachdem wie gut er geschrieben ist.
Um mal auf mein Beispielskript meines ersten Posts zurückzukommen: Konkret wäre die Implementierung wie folgt:
Alle User, die angeschrieben werden können liegen sind in der users.php einstellbar. Der Array könnte auch aus der DB erzeugt werden oder aus irgendwelchen anderen Datenquellen.
users.php
Code
Das Abschicken der Mail erfolgt immer nachdem die benötigten Post-Daten vorhanden sind. Die Validierung der Daten kann beliebig ausgebaut werden:
sendmail.php
Code
Anschließend braucht nur noch das Formular generiert werden. Hier mal ein vollkommen designloses Exemplar:
contactform.php
Code
Was hier passiert: Das Formular wird an irgendeiner Stelle in die Webseite eingebunden (per include('contactform.php')). Direkt vor dem
Erzeugen des Formulars wird der Code zum verschicken eingebunden und damit getestet, ob die nötigen Post-Daten vorhanden sind, diese werden validiert und falls möglich an den Empfänger geschickt. Wenn irgendwelche Daten nicht korrekt sind, oder sonst ein Fehler auftritt, wird ein Array mit Fehlermeldungen gefüllt. Der wird im Formular anschließend als Fehlerliste angezeigt.
Was noch zu tun wäre: Man könnte das Formular etwas schöner darstellen (zB mit label-Tags versehen, etc), außerdem könnte man die Validierung noch etwas erweitern (RFC-2822 gültige E-Mail Adressen), dynamisch die Useradressen aus einer Datenbank auslesen, etc. Für deine Zwecke würde es aber wohl reichen die users.php zu ändern und die nötigen E-Mail Adressen einzutragen.
Zitat:
**bussy**
Was soll man dazu sagen? Außer: "Hoffentlich bist du vom anderen Geschlecht" :conf: