Ini mungkin tulisan kuno, tapi ga papa.. siapa tau berguna
Quick Code
< ?php
function validasiEmail($email) {
//cek ada satu karakter @ dan berada pada posisi yang pas
if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
return false;
}
// Pisahkan teks email sebelum dan sesudah @, lalu verifikasi apakah teksnya benar2 valid
$email_array = explode("@", $email);
$local_array = explode(".", $email_array[0]);
for ($i = 0; $i < sizeof($local_array); $i++) {
if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
return false;
}
}
//domain di cek valid ato ga, infonya diambil dari email array di atas
if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
$domain_array = explode(".", $email_array[1]);
if (sizeof($domain_array) < 2) {
return false;
}
for ($i = 0; $i < sizeof($domain_array); $i++) {
if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
return false;
}
}
}
return true;
}
?>
Meski kelihatannya kode di atas bener-bener secure, kode yang di buat oleh Dave Child ini, tidak memvalidasi email 100%, saya rasa jika hasilnya true, 90% saja email nya valid .
kenapa 99%, karena abc@123.456.789 masih mengembalikan nilai TRUE. Lihatlah kode di atas, dimana karakter huruf, garis bawah, atau angka diloloskan untuk nama domain.
Kenapa dibuat begitu, pertama karena domain dibelakang dot (.) bisa jadi lebih dari satu misal abc@yahoo.com.au nah jika di validasi setelah dot bukan merupakan angka saja akan semakin repot, kedua, siapa tau ada domain yang menggunakan angka 4shared.com contohnya, bisa jadi subdomainnya dia juga mempunyai alamat email abc@info.4shared.com
Kembali pada tujuan, yang penting email valid dan form pengisian email tidak di jadikan target hack aja.
Kalau ingin benar-benar valid, kita harus mengumpulkan kode yang digunakan pengecekan email oleh yahoo, gmail, hotmail, plasa, dan ribuan penyedia mail, lalu di urai dan disusun kembali.
so smile.. ![]()












