Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : E-Mail Adressen validieren



Zaphod-B
01-03-2003, 23:55
Moin,
immer wieder stolper ich darüber, dass meine E-Mail Adresse nicht validiert wird, nun war ein Admin mal so net, mir den entsprechende Funltion aus dem PHP Script zu zusenden.
Die E-Mail Adresse lautet zaphod-b at herz--aus--gold.de (das at bitte gegen ein @ austauschen).
Meine vermutung ist, dass das Script die doppel Minus Zeichen nicht akzeptiert.
Und da leider meine PHP Kentnisse gleich null sind, hoffe ich dass hier jemand den Fehler in der Funktion erkennt, und korigiert.
Hier die Funtion:

$ccTLD = array("ac", "ad", "ae", "af", "ag", "ai", "al", "am", "an",
"ao", "aq", "ar", "as", "at", "au", "aw", "az", "ba", "bb", "bd", "be",
"bf", "bg", "bh", "bi", "bj", "bm", "bn", "bo", "br", "bs", "bt", "bv",
"bw", "by", "bz", "ca", "cc", "cd", "cf", "cg", "ch", "ci", "ck", "cl",
"cm", "cn", "co", "cr", "cu", "cv", "cx", "cy", "cz", "de", "dj", "dk",
"dm", "do", "dz", "ec", "ee", "eg", "eh", "er", "es", "et", "fi", "fj",
"fk", "fm", "fo", "fr", "ga", "gd", "ge", "gf", "gg", "gh", "gi", "gl",
"gm", "gn", "gp", "gq", "gr", "gs", "gt", "gu", "gw", "gy", "hk", "hm",
"hn", "hr", "ht", "hu", "id", "ie", "il", "im", "in", "io", "iq", "ir",
"is", "it", "je", "jm", "jo", "jp", "ke", "kg", "kh", "ki", "km", "kn",
"kp", "kr", "kw", "ky", "kz", "la", "lb", "lc", "li", "lk", "lr", "ls",
"lt", "lu", "lv", "ly", "ma", "mc", "md", "mg", "mh", "mk", "ml", "mm",
"mn", "mo", "mp", "mq", "mr", "ms", "mt", "mu", "mv", "mw", "mx", "my",
"mz", "na", "nc", "ne", "nf", "ng", "ni", "nl", "no", "np", "nr", "nu",
"nz", "om", "pa", "pe", "pf", "pg", "ph", "pk", "pl", "pm", "pn", "pr",
"ps", "pt", "pw", "py", "qa", "re", "ro", "ru", "rw", "sa", "sb", "sc",
"sd", "se", "sg", "sh", "si", "sj", "sk", "sl", "sm", "sn", "so", "sr",
"st", "sv", "sy", "sz", "tc", "td", "tf", "tg", "th", "tj", "tk", "tm",
"tn", "to", "tp", "tr", "tt", "tv", "tw", "tz", "ua", "ug", "uk", "um",
"us", "uy", "uz", "va", "vc", "ve", "vg", "vi", "vn", "vu", "wf", "ws",
"ye", "yt", "yu", "za", "zm", "zw");
$gTLD = array("arpa", "com", "edu" , "gov", "int", "mil", "net",
"org");
$newTLD = array("aero", "biz", "coop", "info", "museum", "name",
"pro");
$TLD = array_merge($ccTLD, $gTLD);
$allTLD = array_merge($TLD, $newTLD);

list($empty, $at_missing, $invalid_username, $invalid_hostname,
$invalid_tld, $unknown_domain) = array(1, 2, 4, 8, 16, 32);

function validateMail($s, $new) {
global $TLD, $allTLD, $empty, $at_missing, $invalid_username,
$invalid_hostname, $invalid_tld, $unknown_domain;
if ($s == "")
return $empty;
else if (substr_count($s, "@") != 1)
return $at_missing;
else {
$res = 0;
list($userName, $hostName) = explode("@", $s);
if (! preg_match("/^[a-z0-9\_\-\.\%]+$/i", $userName))
$res |= $invalid_username;
if (! preg_match("/^([a-z0-9]+[\-\.]{0,1})+\.[a-z]+$/i",
$hostName))
$res |= $invalid_hostname;
$subdomains = explode(".", $hostName);
$tld = $subdomains[count($subdomains) - 1];
if (! ($new? in_array($tld, $allTLD): in_array($tld, $TLD)))
$res |= $invalid_tld;
if (! checkdnsrr($hostName))
$res |= $unknown_domain;
return $res;
}
}

Greetings Zaphod-B

Jana
02-03-2003, 08:45
Diese beiden Zeilen


if (! preg_match("/^[a-z0-9_-.%]+$/i", $userName))
if (! preg_match("/^([a-z0-9]+[-.]{0,1})+.[a-z]+$/i", $hostName)

überprüfen deine e-mail Adresse auf die richtige Zeichenfolge.
Soweit ich das jetzt auf die Schnelle überreiße ist nur laut dem Quantifizierer entweder kein oder nur ein "-" Zeichen zulässig; [-.]{0,1}

Zaphod-B
02-03-2003, 08:52
Moin,
vielen dank, dass hilft schon mal weiter.



Greetings Zaphod-B