Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Frage über E-Mail-Check?
Frage
Hallo.
Weisst jemand, wie man einen E-Mail-Check bekommen kann. Wenn Benutzer falsch seine E-Mail-Adresse eintragen z. B. statt @ eine q u.s.w. Dann müste normaleweise erst wider seine E-Mail eintragen. Wenn jemand Bescheid weisst, warte ich auf Antwort.
Danke.
Cu.
Antwort 1 von abc123
Hier zwei Beispiele.
*** mit JavaScript ***
<html>
<body>
<script language="JavaScript">
emails = new Array(
"ab", // falsch
"a.b", // falsch
"a@b", // falsch
"a@b.", // falsch
"a@.bc", // falsch
"a@b.c", // falsch
"a@b.cd", // OK
"a@@b.cd", // falsch
"a@-bc", // falsch
"a@-.bc", // falsch
"a@b-.cd", // falsch
"a@b-c.d", // falsch (mind. 2 Buchstaben am Ende)
"a@b-c.de", // OK
"a@b-c.def", // OK
"a@b.c.de", // OK
"@a.bc", // falsch
"-@a.bc", // falsch
".@a.bc", // falsch
"-a@b.cd", // falsch
".a@b.cd", // falsch
"a-@b.cd", // falsch
"a.@b.cd", // falsch
"a..b@c.de", // falsch
"a--b@c.de", // falsch
"a.b@c.de", // OK
"a-b@c.de", // OK
"a.b@c-d.ef", // OK
"a-b@c.d.ef" // OK
);
pattern = /^[wd]+([.-]?[wd]+)*@w+([.-]?[wd]+)*.w{2}w*$/i;
document.write("<table border=1 cellspacing=5> ");
for(i=0; i < emails.length; i++) {
document.write("<tr> ");
if(pattern.test(emails))
document.write(" <td>"+emails+"</td> <td>OK</td> ");
else
document.write(" <td>"+emails+"</td> <td>ungültig</td> ");
document.write("</tr> ");
}
document.write("</table> ");
</script>
</body>
</html>
*** mit PHP genauso ***
<?php
$emails = array(
"ab", // falsch
"a.b", // falsch
"a@b", // falsch
"a@b.", // falsch
"a@.bc", // falsch
"a@b.c", // falsch
"a@b.cd", // OK
"a@@b.cd", // falsch
"a@-bc", // falsch
"a@-.bc", // falsch
"a@b-.cd", // falsch
"a@b-c.d", // falsch (mind. 2 Buchstaben am Ende)
"a@b-c.de", // OK
"a@b-c.def", // OK
"a@b.c.de", // OK
"@a.bc", // falsch
"-@a.bc", // falsch
".@a.bc", // falsch
"-a@b.cd", // falsch
".a@b.cd", // falsch
"a-@b.cd", // falsch
"a.@b.cd", // falsch
"a..b@c.de", // falsch
"a--b@c.de", // falsch
"a.b@c.de", // OK
"a-b@c.de", // OK
"a.b@c-d.ef", // OK
"a-b@c.d.ef" // OK
);
$pattern = "/^[wd]+([.-]?[wd]+)*@w+([.-]?[wd]+)*.w{2}w*$/i";
echo "<table border=1 cellspacing=5> ";
for($i=0; $i < count($emails); $i++) {
echo "<tr> ";
if(preg_match($pattern, $emails[$i]))
echo " <td>".$emails[$i]."</td> <td>OK</td> ";
else
echo " <td>".$emails[$i]."</td> <td>ungültig</td> ";
echo "</tr> ";
}
echo "</table> ";
?>
Gruß
Michael
*** mit JavaScript ***
<html>
<body>
<script language="JavaScript">
emails = new Array(
"ab", // falsch
"a.b", // falsch
"a@b", // falsch
"a@b.", // falsch
"a@.bc", // falsch
"a@b.c", // falsch
"a@b.cd", // OK
"a@@b.cd", // falsch
"a@-bc", // falsch
"a@-.bc", // falsch
"a@b-.cd", // falsch
"a@b-c.d", // falsch (mind. 2 Buchstaben am Ende)
"a@b-c.de", // OK
"a@b-c.def", // OK
"a@b.c.de", // OK
"@a.bc", // falsch
"-@a.bc", // falsch
".@a.bc", // falsch
"-a@b.cd", // falsch
".a@b.cd", // falsch
"a-@b.cd", // falsch
"a.@b.cd", // falsch
"a..b@c.de", // falsch
"a--b@c.de", // falsch
"a.b@c.de", // OK
"a-b@c.de", // OK
"a.b@c-d.ef", // OK
"a-b@c.d.ef" // OK
);
pattern = /^[wd]+([.-]?[wd]+)*@w+([.-]?[wd]+)*.w{2}w*$/i;
document.write("<table border=1 cellspacing=5> ");
for(i=0; i < emails.length; i++) {
document.write("<tr> ");
if(pattern.test(emails))
document.write(" <td>"+emails+"</td> <td>OK</td> ");
else
document.write(" <td>"+emails+"</td> <td>ungültig</td> ");
document.write("</tr> ");
}
document.write("</table> ");
</script>
</body>
</html>
*** mit PHP genauso ***
<?php
$emails = array(
"ab", // falsch
"a.b", // falsch
"a@b", // falsch
"a@b.", // falsch
"a@.bc", // falsch
"a@b.c", // falsch
"a@b.cd", // OK
"a@@b.cd", // falsch
"a@-bc", // falsch
"a@-.bc", // falsch
"a@b-.cd", // falsch
"a@b-c.d", // falsch (mind. 2 Buchstaben am Ende)
"a@b-c.de", // OK
"a@b-c.def", // OK
"a@b.c.de", // OK
"@a.bc", // falsch
"-@a.bc", // falsch
".@a.bc", // falsch
"-a@b.cd", // falsch
".a@b.cd", // falsch
"a-@b.cd", // falsch
"a.@b.cd", // falsch
"a..b@c.de", // falsch
"a--b@c.de", // falsch
"a.b@c.de", // OK
"a-b@c.de", // OK
"a.b@c-d.ef", // OK
"a-b@c.d.ef" // OK
);
$pattern = "/^[wd]+([.-]?[wd]+)*@w+([.-]?[wd]+)*.w{2}w*$/i";
echo "<table border=1 cellspacing=5> ";
for($i=0; $i < count($emails); $i++) {
echo "<tr> ";
if(preg_match($pattern, $emails[$i]))
echo " <td>".$emails[$i]."</td> <td>OK</td> ";
else
echo " <td>".$emails[$i]."</td> <td>ungültig</td> ";
echo "</tr> ";
}
echo "</table> ";
?>
Gruß
Michael
Antwort 2 von PROGSTYLE
Mit PHP ganz einfach...
du liest das gewünschte Feld (hier Email) mit PHP aus...
und guckst ob mindestens ein "@" und ein "." drin ist... das geht mit der funktion :
$anzahl_at = substr_count($email,"@");
$anzahl_point = substr_count($email,".");
wenn $anzahl_at oder $anzahl_point gleich 0 ist, fragst du die emailadresse nochmal ab...
dann kannst du noch zusätzlich abfragen wie lang der string ist... eine gültige emailadresse muss mind. 8 zeichen enthalten.. mind ein buchstabe vor dem @, dann mind 3 buchstaben für die domain, ein . und mindestens 2 stellen danach..
dies kannst du mit dem befehl strlen einsehen..
$laenge = strlen($email);
also wenn $laenge kleiner ist als 8 dann ist dies auch keine gültige
MfG Tobias...
du liest das gewünschte Feld (hier Email) mit PHP aus...
und guckst ob mindestens ein "@" und ein "." drin ist... das geht mit der funktion :
$anzahl_at = substr_count($email,"@");
$anzahl_point = substr_count($email,".");
wenn $anzahl_at oder $anzahl_point gleich 0 ist, fragst du die emailadresse nochmal ab...
dann kannst du noch zusätzlich abfragen wie lang der string ist... eine gültige emailadresse muss mind. 8 zeichen enthalten.. mind ein buchstabe vor dem @, dann mind 3 buchstaben für die domain, ein . und mindestens 2 stellen danach..
dies kannst du mit dem befehl strlen einsehen..
$laenge = strlen($email);
also wenn $laenge kleiner ist als 8 dann ist dies auch keine gültige
MfG Tobias...

