E-Mail-Adresse aus Formular überprüfen

SilentWarrior

Erfahrenes Mitglied
Moin allerseits

Mal 'ne Frage: Kann mir jemand verraten, wie man z. B. abcheckt, ob eine E-Mail-Adresse folgende Form hat:

VARIABLE1@VARIABLE2.VARIABLE3

... wobei VARIABLE1 min. 3 Felder lang ist und VARIABLE2 und VARIABLE3 min. 2 Felder. Ausserdem dürfen die Variablen nur Buchstaben, Punkt, , Bindestrich, Underline und Zahlen enthalten. (oder gibt's sonst noch was bei Mails?)

Kann mir jemand sagen, wie das geht? Wäre oberkorrekt.

SilentWarrior
 
Für solche Art von Einsatz kannst du reguläre Ausdrücke benutzen. Ich hab dir hier mal ein Beispiel rausgesucht, wie man eine eMail auf Gültigkeit untersucht. Dabei ist aber nicht das mit den mind. 3 Zeichen für dem @ beachtet.

PHP:
$ez = '[-!#$%&\'*+\\./0-9=?A-Z^_'a-z{|}~]+';
$regex = "^" . $ez . "@" . $ez . "\." . $ez . "$";
$adresse = "testname@domain.de";

if (ereg ($regex, $adresse))
  echo "$adresse ist eine gültige eMail-Adresse";
else
  echo "$adresse ist ungültig";
 
boah... kompliziert.

also, ich nehm mal an, das sind die gültigen zeichen:

[-!#$%&'*+./0-9=?A-Z^_'a-z{|}~]+';


merkt php denn automatisch, dass 0-9 0,1,2...9 bedeutet?

und was heisst das komische ^ am anfang von regex?

und was hat es mit testname@domain.de auf sich?

sorry für die vielen fragen, aber ich will das was ich scripte, auch verstehen.
 
Mhh... reguläre Ausdrücke... lecker!
Eine Einführung in diese exquisite Kunst der Zeichenkettenmanipulation gibt´s auf http://www.php4-forum.de/regex.htm ;)
Da werden die Grundbegriffe vermittelt.
Ein sehr schöner regulärer Ausdruck zur Überprüfung von E-Mail-Adressen ist dieser hier:
PHP:
eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@([0-9a-z](-?[0-9a-z])*\.)+[a-z]{2}([zmuvtg]|fo|me)?$",$email);
(Gefunden auf http://www.php.net/manual/en/function.eregi.php )
 
Ja es sieht kompliziert aus. Ich hab die richtige Funktionsweise auch noch nicht kapiert. Das Beispiel hier ist noch gar nicht mal so komplex. Ich würde dir empfehlen dir mal auf http://www.php.net die Dokumentation zu PHP vorzunehmen und nach regulären Ausdürcken zu suchen. Du kannst die Doku dort übrigens in deutsch runterladen.

Bei den Angaben 0-9 und A-Z weiß PHP automatisch, dass dort 1, 2, 3 und B, C, D und so dazwischenliegen.

Die eMail-Adresse, die ich angegeben habe ist nur zum Test. Also die eMail-Adresse wird auf Gültigkeit überprüft. Dort würde dann in deinem Fall die zu prüfende eMail-Adresse reinkommen.
 
DAAANKEEE !!!

Danke euch allen!

Dank dem bunten Code-Mix hierdrin habe ich jetzt rausgefunden, wie es funktioniert.

Aber ein anderes Problem ist aufgetaucht: Ich möchte überprüfen, ob ein Name eingegeben wurde. (ist ja im Grunde nicht schwer)

Aber ich kann ja nicht einfach das überprüfen, da dann immer, wenn man das Gästebuch aufmachen möchte, die Meldung kommt: "Gib einen Namen ein!"

Noch zur Info: Das Verarbeitungsskript und das Formular sind ein und dieselbe Datei... und das soll auch so bleiben.

Gibts da irgendeine Lösung?

SilentWarrior
 
noch mal ne frage:

ist das nur bei mir so oder ist es normal, dass wenn man ein formular in einem frameset aufruft, dass dann der cursor in den textfeldern so komisch flimmert.... kann man das irgendwie abstellen?

SilentWarrior
 
zur Namensüberprüfung: zunächst solltest du sichergehen, dass überhaupt ein Eintrag gesendet wurde. dies erreichst du, indem du im FORM folgende zeile einfügst
PHP:
 <input type="hidden" name="gesendet" value="yes">

und dann bei der Auswertung folgende abfrage ainfügst
PHP:
 if ($gesendet=="yes"){
  //überprüfe ob Name eingetragen etc.
  //speichere Eintrag
 }
 else{
  //gib Gästebuch aus
 }

hope that helps
 
Zurück