The following example uses the filter_var() function to first remove all illegal characters from the $email variable, then check if it is a valid email address:
Dit lijkt me een beetje raar. Als je de illegale tekens verwijderd krijg je mogelijks een correct adres
vb: een aanhalingsteken is een illegaal karakter
dus x.y@xx."yy wordt eigenlijk [email protected] wat wel een correct adres is maar de input is het eigenlijk niet.
Het resultaat is wel false zoals het moet.
ik heb de functie een beetje getest met
* extra spatie
* een aanhalingsteken
* een <div>
Ik vind "sanitize" functions sowieso slecht. Deze proberen recht te buigen wat krom is. Invoer is goed of fout, maar niet "misschien goed als we deze een beetje verbouwen". Hierbij pas je ook de invoer van de gebruiker aan. Deze zou gewoon foute invoer terug op zijn/haar bord moeten krijgen.
Daarnaast had het valideren van e-mailadressen problemen met internationale adressen/domeinen. Misschien is dit inmiddels opgelost of verbeterd, geen idee eigenlijk. Maar wat je dus eigenlijk (alleen) wilt doen is valideren. Weet je zeker dat je niet op zoek was naar FILTER_[color=#ff0000]VALIDATE[/color]_EMAIL in plaats van FILTER_[color=#ff0000]SANITIZE[/color]_EMAIL?
Het op deze manier controleren op de geldigheid van e-mailadressen levert mogelijk veel false positives/negatives op.
En als extra controle zou je volgens mij ook nog moeten kijken of het domein een MX-record heeft.
Maar je zou natuurlijk ook gewoon altijd een controle-mailtje kunnen sturen :).
Je kan ook bij https://3v4l.org eens in de snadbox kunnen kijken hoe de validatie van mailadressen verloopt. Vroeger had je nog geen lange tld's, die je nu wel hebt.
Bij het invoeren van een mailadres. Je komt hiermee te weten of de domeinnaam bestaat en mails kan ontvangen. Maar bij het wijzigen is het juist ook erg waardevol, zodat niet iemand een onzinnige onbestaand maialdres kan invullen. Hoewel dat zijn verantwoording is.