FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

Bei Kontaktformularen richtige E-Mail-Adresse angeben

Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 15:10
Anonymer User
Also,
ich hab ein Formular eingerichtet, wo man sein Namen, E-mail Adresse, Beteff und die Nachricht eingeben kann(Mit PHP gemacht). Nun kann man da aber noch bei der E-mail Adresse den letzten Scheiß eingeben.
Kann man mit PHP das so prüfen lassen, das man ne Fehlerausgabe bekommt, wenn z.B. kein @ dadrinne hat oder kein .irgendwas (z.B. .de .com etc.) ??
Wenn ja kann mir jemand den Code hier reinschreiben. Hab dazu nichts in meinen PHP Büchern gefunden.

(edit fal: Topictitel)

RE: Bei Kontaktformularen richtiges E-mail Adresse angeben 2007-07-26 15:25
garou
Wie wäre es mit einem regulären Ausdruck?

RE: Bei Kontaktformularen richtiges E-mail Adresse angeben 2007-07-26 15:25
Anonymer User
Ok, es sollte 'richtige' heißen, kann der Admin das vllt. noch ändern?

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 15:30
Anarch
Eine Email-Adresse mit einem regulären (4k, der Ausdruck) zu prüfen ist möglich, aber eher sinnlos, da es durchaus Email-Adressen gibt, die nicht "korrekt" sind, aber trotzdem funktionieren.

Die sinnvollste Methode ist eine Validierungs-Mail zu schicken. Egal, was der User da einträgt. :-)

Edit: Naja, und einen minimalen Sanity-Check, sowas wie ".+@.+\..+" oder so.

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 15:48
Anonymer User
Edit: Naja, und einen minimalen Sanity-Check, sowas wie ".+@.+\..+" oder so.
Ich glaub wir meinen das gleich oder? Haltprüfen ob ein @ drinne ist und ob ne Endung vorhanden ist. Aber wie mach ich das konkret? Hab kein Plan wie ich den Code schreiben kann und muß!

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 15:53
Popcorn
Ein bi0chen mehr sollte man schon prüfen, weil sonst auch solcher Unfug durchkommt: spam@laid.de\nbcc:spam2@laid.de\nbcc:spam3@laid.de

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 16:00
Anarch
Ein bi0chen mehr sollte man schon prüfen, weil sonst auch solcher Unfug durchkommt: spam@laid.de\nbcc:spam2@laid.de\nbcc:spam3@laid.de

Guter Punkt, wenn man das direkt in ne Mail reinschreibt (und nicht z.B. mit ner passenden Funktion macht), sollte man auf Newlines achten :-)

Zum OP: Wie man das macht? Lies die Doku zum Thema "Reguläre Ausdrücke".

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 16:05
tilo
Die sinnvollste Methode ist eine Validierungs-Mail zu schicken. Egal, was der User da einträgt. :-)

Aber ne Validierungsmail für ein Kontaktformular - nunja, vielleicht auch etwas zu viel des Guten!

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 16:19
Anarch
Die sinnvollste Methode ist eine Validierungs-Mail zu schicken. Egal, was der User da einträgt. :-)

Aber ne Validierungsmail für ein Kontaktformular - nunja, vielleicht auch etwas zu viel des Guten!

Ach was! :o)

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 16:23
Da:Sourcerer
Ihr könnt ja gerne mal meine RegExp ausprobieren:
/^("?)(?i:[a-z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\|\}~]+[a-z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\|\}~\.]*[a-z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\|\}~]+)\\1@(?i:[a-z][a-z0-9\-]+\.)+([a-z]{2}|com|org|net|biz|info|name|aero|biz|info|jobs|museum|name)$/

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 17:10
Muelli
Ihr könnt ja gerne mal meine RegExp ausprobieren:
/^("?)(?i:[a-z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\|\}~]+[a-z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\|\}~\.]*[a-z0-9!#\$%&\'\*\+\-\/=\?\^_`\{\|\}~]+)\\1@(?i:[a-z][a-z0-9\-]+\.)+([a-z]{2}|com|org|net|biz|info|name|aero|biz|info|jobs|museum|name)$/


.mobi und .travel gehen nicht… und das ist vermutlich genau das Problem, was forcer angesprochen hat… eMail stinkt ohnehin…



MfG
Muelli

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 17:11
Da:Sourcerer
Wusste nicht, dass es die gibt… Sind aber schnell nachgetragen.

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 17:36
Anonymer LEIFer
Wusste nicht, dass es die gibt… Sind aber schnell nachgetragen.
Ja, die kannst Du schnell nachtragen. Solange es a) um Dich handelt und b) Du das wirklich wartest.

In der Realität ist einer der Nachteile solch restriktiver Überprüfungen, dass sie oft später nicht mehr angepasst werden. Da dran haben sich z.B. schon viele Leute mit einer .name-Domain gestoßen. Sicherheitseinschränkungen würde ich auch machen (z.B. damit man ein Formular nicht als Spamschleuder missbrauchen kann), aber sonst nicht übermäßig scharf einschränken.

LEIFer

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 18:41
Hannes
zu überprüfen, ob so eine mailadresse syntaktisch korrekt ist, ist imho auch nur wichtig, wenn automatisch mails dorthin geschickt werden sollen. wenn ich gezwungen werde eine mailadresse einzugeben, geb ich halt ne nicht erreichbare, aber syntaktisch richtige adresse an; da hilft die schönste regex nicht.

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 18:51
Popcorn
zu überprüfen, ob so eine mailadresse syntaktisch korrekt ist, ist imho auch nur wichtig, wenn automatisch mails dorthin geschickt werden sollen. wenn ich gezwungen werde eine mailadresse einzugeben, geb ich halt ne nicht erreichbare, aber syntaktisch richtige adresse an; da hilft die schönste regex nicht.

Du musst es aber auch von der anderen Seite sehen: Leute die gerne Antwort hätten, sich aber vertippen, es nicht merken und hinterher denken, dass das ein Saftladen ist, weil sie keine Antwort bekommen. Von daher hat es auch Vorteile, wenn keine automatischen Mails verschickt werden.

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-26 22:31
f0k
Wenn es ein Kontaktformular ist, macht es schon Sinn, die Gültigkeit der Emailadresse zu überprüfen und dann den Nutzer darauf hinzuweisen, dass die Nachricht zwar verschickt wurde, die Emailadresse aber wahrscheinlich nicht gültig ist und er deshalb keine Antwort erhalten wird. (Und wenn Du nett bist, bietest Du ihm dann an, hier noch einmal die korrekte Adresse einzugeben: *insert vorausgefülltes Eingabefeld und Button here*)

Außerdem ein gut gemeinter Hinweis: Nenne die Formularfelder auf keinen Fall Name, Email, Message und so weiter, sondern lieber awoidwa, fioe, und pojfa. Dann bekommst Du wesentlich weniger Spam. (Ich spreche jetzt vom name-Attribut der <input>s, nicht von der Beschriftung der Felder.)

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-27 00:42
Hannes
Du musst es aber auch von der anderen Seite sehen: Leute die gerne Antwort hätten, sich aber vertippen, es nicht merken und hinterher denken, dass das ein Saftladen ist, weil sie keine Antwort bekommen. Von daher hat es auch Vorteile, wenn keine automatischen Mails verschickt werden.

dann reicht an sich aber auch das von anarch vorgeschlagene ".+@.+\..+". vertipper in der tld kann man meist mit bloßem auge erkennen, und bei anderweitigen nicht-syntaktischen fehlern schlägt auch kein filter an. klar, möglichst gut filtern ist schön, aber ich persönlich habe keine lust mich "dauernd" nach neuen tlds umzuschauen und sie in meine skripte zu integrieren ;)

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-27 09:15
Popcorn
Mach ich auch nicht. Bei mir endet das ganze auf ein {2,6}. :-) Wollte auch nur noch mal darauf hingewiesen haben.

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-27 10:06
Anonymer User
Für PHP ist die einfachste Lösung die Pear Validate-Klasse:
http://pear.php.net/package/Validate

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-29 15:08
GroßerSchöpfer
Ich habe dafür mal folgenden Code geschrieben:

function verify_email($email) {         require_once('Mail/RFC822.php');                          if($structure = Mail_RFC822::isValidInetAddress($email, true)) {                 if (getmxrr($structure[1].".", $mxarray)) {                         return $structure[0]."@".$structure[1];                 } else {                         return false;                 }         } else {                 return false;         } }

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-30 10:39
Anonymer User
Hey GroßerSchöpfer,
vielen vielen Dank aber wie es leider so ist hab ich da immer noch ne dumme Frage!
Also bei mnir funkts dat nich! Muß ich da noch irgendwas verändern?
Ich hab die beiden Ordner, die im Package waren, komplett hochgeladen aber es will immer noch nicht!

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-30 10:57
tilo
Hey GroßerSchöpfer,
vielen vielen Dank aber wie es leider so ist hab ich da immer noch ne dumme Frage!
Also bei mnir funkts dat nich! Muß ich da noch irgendwas verändern?
Ich hab die beiden Ordner, die im Package waren, komplett hochgeladen aber es will immer noch nicht!

Gibts ne Fehlermeldung?
Hast du die PEAR-Bibliothek überhaupt installiert?

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-07-30 10:59
Wulf
if (getmxrr($structure[1].".", $mxarray)) {

Ein MX record ist nicht notwendig. Es reicht auch, wenn der Domain-Part eine Adresse hat (i.e. A bzw AAAA record).
Und was, wenn das DNS gerade in dem Moment keine Ergebnisse liefert? Dann kriegt der User auch die Meldung, seine Adresse sei ungültig und er weiß nicht warum.

The lookup first attempts to locate an MX
record associated with the name. If a CNAME record is found instead,
the resulting name is processed as if it were the initial name. If
no MX records are found, but an A RR is found, the A RR is treated as
if it was associated with an implicit MX RR, with a preference of 0,
pointing to that host. If one or more MX RRs are found for a given
name, SMTP systems MUST NOT utilize any A RRs associated with that
name unless they are located using the MX RRs; the "implicit MX" rule
above applies only if there are no MX records present. If MX records
are present, but none of them are usable, this situation MUST be
reported as an error.

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-08-01 10:40
Anonymer User
Gibts ne Fehlermeldung?

Es gibt keine Fehlermeldung, er versendet das Formular ganz normal als E-mail. Und der User bekommt nur eine Seite ausgegeben mit seinen Verschickten Sachen, also sowas wie:

Vielen Dank, ihre Nachricht wurde versendet etc.

Hast du die PEAR-Bibliothek überhaupt installiert?

Ich hab bei Speicherhosting was gemietet, keinen ganzen Server, und das ganze lade ich über confixx hoch. Muß dort ne PEAR-Bibliothek installiert sein? Dachte das recht wenn ich das Package hochlade, da er ja darauf zugreifen sollte.

Mfg

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-08-02 00:32
Atomic
Ka ob du inzwischen was gebastelt hast aber hier.

function isEmailValid($email)
{
if (ereg("^([a-zA-Z0-9\.\_\-]+)@([a-zA-Z0-9\.\-]+\.[A-Za-z][A-Za-z]+)$", $email))
{
return true;
}
return false;
}
}

Gruß Atomic

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-08-02 09:02
Anonymer LEIFer
Bei Umlautdomains soll der Benutzer den Domainnamen zuvor selber per Punycode umwandeln?

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-08-02 09:25
Wulf
if (ereg("^([a-zA-Z0-9\.\_\-]+)@([a-zA-Z0-9\.\-]+\.[A-Za-z][A-Za-z]+)$", $email))
_@..xx wird akzeptiert,
Joe\@Smith@[134.100.9.70] hingegen nicht.

Bei Umlautdomains soll der Benutzer den Domainnamen zuvor selber per Punycode umwandeln?

Muss man halt vor seiner Prüfroutine den Kram in Punycode wandeln und dann den Punycode überprüfen?!

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-08-02 11:59
DeGT
Ka ob du inzwischen was gebastelt hast aber hier.

function isEmailValid($email)
{
if (ereg("^([a-zA-Z0-9\.\_\-]+)@([a-zA-Z0-9\.\-]+\.[A-Za-z][A-Za-z]+)$", $email))
{
return true;
}
return false;
}
}

Gruß Atomic
kleine Anmerkung: das if-then-else ist hier überflüssig (allerdings leider recht weit verbreitet).

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-08-02 12:45
tomcat
kleine Anmerkung: das if-then-else ist hier überflüssig (allerdings leider recht weit verbreitet).

Mmhh wie hattest du es den geschrieben ich komm auch nur auf if-then-else.

RE: Bei Kontaktformularen richtige E-Mail-Adresse angeben 2007-08-02 12:49
f0k
kleine Anmerkung: das if-then-else ist hier überflüssig (allerdings leider recht weit verbreitet).
Mmhh wie hattest du es den geschrieben ich komm auch nur auf if-then-else.
Naja, wenn ereg sowieso einen boolean liefert, reicht ein return ereg(...);