Check mail formulier - fout
Ik ben bezig met een controle voor mail adres in een formulier.
Controle gebeurt goed, alleen als ik een mail adres gebruik om wat in deze format is: [email protected] kom ik niet door de controle heen.
Het komt volgens mij dat het 2de karakter een punt(.) is en er slechts 1 karakter nog eens voor staat.
Dit is het script, wat zit er fout of moet ik veranderen?
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
return $valid;
}
Alvast bedankt.
Controle gebeurt goed, alleen als ik een mail adres gebruik om wat in deze format is: [email protected] kom ik niet door de controle heen.
Het komt volgens mij dat het 2de karakter een punt(.) is en er slechts 1 karakter nog eens voor staat.
Dit is het script, wat zit er fout of moet ik veranderen?
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
return $valid;
}
Alvast bedankt.
Volgens mij moet je kijken bij de if(). Want die eerste 3 regels doen niks met die . (Die kijken alleen naar alles achter de @).
Verder kan ik je niet helpen, ben nog maar een noob in php.
Verder kan ik je niet helpen, ben nog maar een noob in php.
Het klopt inderdaad dat het in deze code zit:
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
Ik heb al dingen aangepast om te testen maar, helaas kom ik zelf niet verder als ik een mailadres invul zoals [email protected]
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
Ik heb al dingen aangepast om te testen maar, helaas kom ik zelf niet verder als ik een mailadres invul zoals [email protected]
Gewijzigd op 08/09/2010 16:27:20 door B S
Een paar opmerkingen vooraf:
- ik zou geen eregi gebruiken, maar preg_match. verschillende redenen voor, zal ik nu niet uitleggen
- je gebruikt hier $mail, terwijl je ervoor $email_resolved en $email_host gebruikt, misschien gaat daar ook iets fout?
- let wel dat je hiermee de parameter i moet meegeven (hoofdletter-ongevoelig), aangezien je alleen op lowercase letters controleert
Ik zou de regex daarnaast zoals onderstaand aanpassen. Ik weet trouwens niet waarom die twee \\ daar voor de . staan, volgens mij moet dat een enkele zijn om de speciale betekenis van de . te omzeilen? (als dat is omdat het tussen ""-quotes staat, dan is het goed. ik gebruik die quotes eigenlijk zelden)
^[0-9a-z]([0-9a-z-_.~]?)*@[0-9a-z]([0-9a-z-.]?)*\.[a-z]{2,4}$
Een reguliere expressie die de meeste email-adressen zal matchen:
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
(bron: http://www.regular-expressions.info/email.html )
Bij deze is ook de parameter i nodig. Het enige verschil is eigenlijk dat hierbij de '~' niet inbegrepen is, die kun je er zelf bij zetten.
Ik hoop hiermee je vraag beantwoord te hebben.
- ik zou geen eregi gebruiken, maar preg_match. verschillende redenen voor, zal ik nu niet uitleggen
- je gebruikt hier $mail, terwijl je ervoor $email_resolved en $email_host gebruikt, misschien gaat daar ook iets fout?
- let wel dat je hiermee de parameter i moet meegeven (hoofdletter-ongevoelig), aangezien je alleen op lowercase letters controleert
Ik zou de regex daarnaast zoals onderstaand aanpassen. Ik weet trouwens niet waarom die twee \\ daar voor de . staan, volgens mij moet dat een enkele zijn om de speciale betekenis van de . te omzeilen? (als dat is omdat het tussen ""-quotes staat, dan is het goed. ik gebruik die quotes eigenlijk zelden)
^[0-9a-z]([0-9a-z-_.~]?)*@[0-9a-z]([0-9a-z-.]?)*\.[a-z]{2,4}$
Een reguliere expressie die de meeste email-adressen zal matchen:
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
(bron: http://www.regular-expressions.info/email.html )
Bij deze is ook de parameter i nodig. Het enige verschil is eigenlijk dat hierbij de '~' niet inbegrepen is, die kun je er zelf bij zetten.
Ik hoop hiermee je vraag beantwoord te hebben.




