Megbízható e-mail cím ellenőrzés
Ha a weboldalunkon keresztül szeretnénk e-mail címet bekérni a látogatótól, akár egy regisztrációhoz, akár egy hírlevél feliratkozáshoz, minden esetben meg kell győződnünk róla, hogy a begépelt e-mail cím valós-e. Egyfelől azért, hogy e-mailben tudjuk értesíteni a látogatót az aktuális eseményekről, illetve ki tudjuk szűrni vele az esetlegesen komolytalan, vagy kártékony érdeklődéseket.
Az interneten számos példa kering a helyes megoldásról, de a legtöbb csak az e-mail cím összetételét képes megvizsgálni. Tehát fogado-neve@domain.tld.
Nos amiért rossz ez a megoldás, hogy az imént leírt e-mail cím átmenne az ellenőrzésen, holott egészen biztosak lehetünk benne, hogy ez egy nem valós e-mail cím.
Megoldás
Spóroljunk meg egy apróbb kellemetlenséget magunknak és a kapott e-mail címet, még az ellenőrzés előtt szabadítsuk meg a felesleges szóközöktől, illetve alakítsuk át, hogy kizárólag kis betűkből álljon. Előfordulhat ugyanis, hogy vagy a cím előtt, vagy a címben, vagy akár a cím után szerepel egy szóköz, amit nehéz kiszúrni, ha kézi ellenőrzésre kerül a sor.
PHP
$email = str_replace(' ', '', strtolower($_POST['email']));
A PHP 5.2 verziójától kezdve már léteztek szűrésre alkalmazható függvények. A függvény paraméterezésével beállíthatjuk, hogy milyen feltétel alapján szeretnénk szűrni.
PHP
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
echo '<p class="alert alert-danger">'.$email.' feltehetően nem valós, kérjük adja meg újra!</p>';
}
Ezzel megkapjuk, hogy az e-mail cím nem csak formailag felel-e meg, hanem valóban csak és kizárólag olyan elemekből épül fel, ami csak valós e-mail cím esetén létezhet.
De nekünk ez még nem elég, hiszen történhet elgépelés az e-mail cím domain végződésében, ami elsőre formailag helyes lenne, de valójában nem létezik olyan domain. Például valaki elgépeli a _valami_@gmail.com címet _valami_@gmal.com-ra. A második cím esetén hiányzik egy "i" betű.
Ahhoz, hogy ezt is szűrni tudjuk, meg kell vizsgálnunk, hogy valóban létezik-e a domain.
PHP
$email_slug_array = explode('@', $email);
$domain = array_pop($email_slug_array);
if ((!checkdnsrr($domain, 'MX')) && (!checkdnsrr($domain, 'A')))
{
echo '<p class="alert alert-danger">'.$email.' feltehetően nem valós, kérjük adja meg újra!</p>';
}
Ha a vizsgálat minden fázisán átesett az e-mail cím, akkor már csak el kell küldenünk az üzenetet, vagy egy egyszerű php mail függvénnyel, vagy egy phpMailer segítségével. Ez utóbbi számos beállítási lehetőséget egyszerűsít le számunkra az e-mail küldéséhez.
Leírásaink azon kezdő és haladó programozóknak nyújtanak segítséget, akik már minimális szinten foglalkoztak weboldalkészítéssel. Ha szeretnél jobban elmélyülni a témában, vagy elsajátítani alapokat, még tovább fejlődni, akkor nézz körbe tanfolyam kínálatunkban, ahol a kezdőtől a profi szintig nyújtunk képzéseket a számodra.