Website dengan sistem keanggotaan (membership) biasanya memakai alamat email sebagai sarana untuk melakukan verifikasi user. Setiap ada user baru yang mendaftar, ia diwajibkan untuk mengisikan alamat email yang valid.
Nantinya prosedur untuk aktivasi account user tersebut akan dikirimkan melalui alamat emailnya. Bagaimana seandainya alamat email yang diisikan tersebut tidak valid? Sudah pasti proses registrasi tersebut tidak akan berhasil.
Validasi alamat email diperlukan untuk memeriksa kesalahan pengisian tersebut. Disamping itu bisa juga dipakai untuk menghindari kemungkinan pengisian data yang berpotensi menimbulkan masalah, misalnya SQL Injection.
Ada dua hal yang perlu diperiksa, yaitu sintaks email itu sendiri dan keberadaan DNS-nya.
1. Sintaks Email
Alamat email memiliki sintaks username@nama-domain. Nah, berdasarkan pola tersebut kita bisa memeriksa apakah alamat email yang diisikan oleh pengunjung itu valid atau tidak.
Kita bisa menggunakan regular expression seperti contoh kode berikut ini:
<?php
$alamat_email = "username@nama_domain.com";
if (preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9._-] )*@(
[a-zA-Z0-9_-] )+( [a-zA-Z0-9._-] +)+$/" , $alamat_email)) {
echo "Sintaks email valid";
}
else {
echo "Sintaks email tidak valid";
}
?>
2. DNS
Bagaimana cara untuk memastikan bahwa domain email yang dimasukkan oleh pengunjung tersebut benar-benar ada? PHP mempunyai fungsi checkdnsrr yang bisa kita pakai untuk keperluan tersebut.
Sintaksnya adalah sebagai berikut:
int checkdnsrr(string host [,string type]);
Parameter host harus diisi dan berupa nama domain atau IP. Sedangkan parameter type adalah opsional (boleh tidak diisi). Nilai parameter ini bisa berupa A, MX, NS, SOA, PTR, CNAME, AAAA, A6, SRV, NAPTR, TXT atau ANY. Nilai default-nya adalah MX (Mail Exchange).
Fungsi checkdnsrr akan memeriksa record DNS untuk melihat apakah host dan type yang dimaksud ada atau tidak. Jika record ditemukan, hasil eksekusi fungsi tersebut akan bernilai TRUE. Namun jika sebaliknya akan bernilai FALSE.
Contoh penggunaannya adalah sebagai berikut:
<?php
$alamat_email = "username@nama_domain.com";
list ($username, $nama_domain) = split ("@", $alamat_email);
if (checkdnsrr($nama_domain)) {
echo "Domain email valid";
}
else {
echo "Domain email tidak valid";
}
?>
Akan tetapi saat ini fungsi checkdnsrr tersebut belum diimplementasikan pada platform Windows. Lalu bagaimana seandainya server web kita memakai platform Windows. Tidak masalah. Itu bisa diatasi dengan membuat fungsi checkdnsrr sendiri. Contohnya bisa dilihat di sini.


obe | July 23rd, 2009 jam 10:37 pm
lha terus kalo alamat email di isi banyak gmn???
bisa salah mulu donk…!!
misal :
to: abc@yahoo.com,xxx@gmail.com,bbb@ymail.com
kalo di tulis sperti di atas gmn?? tetap error donk…
mohon solusi nya…
bingung ne…
Wahyu Wibowo | July 27th, 2009 jam 11:17 pm
Kalau inputnya banyak, ya harus diparsing dulu baru divalidasi.