Check mail formulier - fout

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

B S

B S

08/09/2010 13:57:13
Quote Anchor link
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.
 
PHP hulp

PHP hulp

22/12/2024 20:52:07
 
Wouter J

Wouter J

08/09/2010 14:51:13
Quote Anchor link
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.
 
B S

B S

08/09/2010 16:27:02
Quote Anchor link
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]
Gewijzigd op 08/09/2010 16:27:20 door B S
 
Marco van Oort

Marco van Oort

08/09/2010 17:40:13
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.