Ik heb hier een script dat moet controleren of een mailveld wel aan bepaalde eisen voldoet. Zit ergens nog een fout maar ik zie hem niet. Kan iemand mij mischien helpen?

<?php
function is_email($emailadres)
{
// Eerst een snelle controle uitvoeren:
// een emailadres moet uit minimaal 7 tekens bestaan:
if(strlen($emailadres) < 7 {
return FALSE;
}
// Daarna een controle met een reguliere expressie uitvoeren:
if(ereg("^[_a-zA-Z0-9-]+(\.a-zA-Z0-9-]+)*@[a-zA-Z
0-9-]+\.)+([a-zA-Z]{2,4})$", $emailadres)) {
return TRUE;
} else {
return FALSE;
}
}

?>
Wat wat is volgens jouw de fout?

Ik zie wel een verouderde eregi-functie.
ik zie het al ik mis een teken ) op regel 6. Slordigheidsfoutje. Wat bedoel je met
een verouderde eregi functie Aar?
data de functie eregi niet meer bestaat.. oftewel out of date..

de nieuwe variant hiervan is preg_match

wat ik zelf altijd doe om een email te controleren:

<?php
if(filter_var($_POST['email'],FILTER_VALIDATE_EMAIL) === false)
{
$mailErrors[] = 'Email is niet geldig';
}
?>
Ok. Weer wat wijzer, ik mis volgens mij alleen nog een stukje van het script. Wannneer ik een fout emailadres invul zoals:

!!!@dss

Wanneer ik op Submit krijg ik geen waarschuwing.
dit komt omdat het alleen kijkt of het een email kan zijn.

om de speciale characters enzo eruit te halen en alleen cijfers en letters toe te staan moet je het volgende gebruiken ipv filter_validate_email

FILTER_SANITIZE_EMAIL

Toevoeging op 14/08/2012 20:33:10:

p.s. gooi er wel altijd htmlentities overheen om xss aanvallen tegen te gaan!
PETJE af voor de snelle en vaak goede hulp op dit Forum!

Reageren