PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Überprüfung von Mailadresse


Flo-Mi
17.02.2005, 21:00:03
Hallo Forum!
Ich habe gerade das "Problem", daß ich dabei Bin mir ein Mail-Formular zu programmieren.
Jetzt möchte ich aber ausschliessen, daß da als Kontaktmöglichkeit bei der Mailadresse irgendwas ohne @ und ohne das Domainkürzel akzeptiert wird.
Gibt es dazu irgendeine vordefinierte Funktion mit welcher man sowas überprüfen kann in PHP?
Ich würd mich freuen, wenn mir jemand einen Tip geben kann!
Gruß,
Flo

|Coding
17.02.2005, 21:12:49
eine funktion gibt es da nicht, aber du kannst es dennoch mit preg_match arbeiten.

e.g.:

<?
$mail = 'me@test.tld';
print preg_match("/^+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(.|-))+[a-z]{2,6}$/", $mail) ? 'gültig!' : 'ungultig';
?>


ausgabe in diesem fall: gültig!

sysop
17.02.2005, 21:16:37
http://at2.php.net/manual/de/function.stristr.php

feuervogel
17.02.2005, 21:26:57
http://at2.php.net/manual/de/function.stristr.php
was hat diese funktion mit der fragestellung zu tun?

Flo-Mi
17.02.2005, 22:49:21
Zitat von feuervogel : was hat diese funktion mit der fragestellung zu tun?
Naja das muss ich gerade zugeben, dass ich mich das auch frage, mann kann mit der Funktion zwar wohl feststellen ob z.B. ein @ enthalten ist oder ein "." jedoch nicht wie viele davon und wo diese enthalten sind. Wenn ich z.B. auf nen Punkt prüfe, hat dann eine Mailadresse, die vor dem @ einen Punkt enthält dann auch einen Match auf "gültig".
@ coding!
Danke für den Tip mit pregmatch!
Gruß, Flo

|Coding
17.02.2005, 23:04:57
was hat diese funktion mit der fragestellung zu tun?
da hat er wohl nicht dran gedacht. ist ja auch nur zu verlockend mit dem beispiel von php.net diese als "lösungsfunktion" zu posten... :-)
@ coding!
Danke für den Tip mit pregmatch!
gern geschehen!

meikel
18.02.2005, 07:08:28
Jetzt möchte ich aber ausschliessen, daß da als Kontaktmöglichkeit bei der Mailadresse irgendwas ohne @ und ohne das Domainkürzel akzeptiert wird.
Aber a@bc.de würdste nehmen? <ggg>

Da_Hero
18.02.2005, 07:54:15
Du könntest das ganze auch so machen:

if(!ereg(".+@.+..+", $mail)&& !empty($mail) )
{
echo "Ihre E-Mail Adresse ist nicht korrekt eingegeben!<br>";
echo "Klicken Sie <a href="bla.php">hier</a>, um zum Formular zurückzukehren.";
}

Das da oben sieht mir persönlich etwas kompliziert aus

|Coding
18.02.2005, 13:22:32
Du könntest das ganze auch so machen:

if(!ereg(".+@.+..+", $mail)&& !empty($mail) )
{
echo "Ihre E-Mail Adresse ist nicht korrekt eingegeben!<br>";
echo "Klicken Sie <a href="bla.php">hier</a>, um zum Formular zurückzukehren.";
}

Das da oben sieht mir persönlich etwas kompliziert aus
regex sind nun mal eine wissenschaft für sich, aber der obige pattern valiediert eine mail halt nach allen regeln (bis auf gültige tld's). man könnte noch weiter gehen und einen request durchführen, welcher checkt ob es "domain.tld" wirklich gibt, da dieser request aber einige minuten dauern kann habe ich das nicht mit einbezogen, da auch dann immer noch der benutzer falsch sein kann und das kann man nicht prüfen.

mit deinem versuch könntest du es auch gleich sein lassen, denn dieser validiert sogar solche mails "a_b@c.d".