Select Language



Followers

IT Programmer. Powered by Blogger.

02 February 2012

Membuat Validasi Email Tingkat Lanjut dengan PHP

"Om Swastiastu"

Setelah sebelumnya saya sempat menulis artikel tentang bagaimana cara melakukan validasi email sederhana dengan PHP, sekarang saya akan membuat artikel untuk melakukan advance email validation atau validasi email tingkat lanjut dengan PHP. Sebelumnya saya hanya menjelaskan bagaimana melakukan validasi email dengan menghitung jumlah tanda at ( @ ) dan tanda titik ( . ) pada email. Sekarang kita akan mulai melakukan validasi yang lebih rumit lagi agar validasi email ini benar-benar kuat.


Hal pertama yang akan kita lakukan adalah mencari posisi tanda at ( @ ) pada string email. Lalu kita membuat variabel valid yang bernilai true untuk mengecek apakah email tersebut valid, jika dalam validasi gagal, kita ganti nilai valid menjadi false. Setelah itu cek apakah email tersebut berbentuk boolean atau tidak. Jika boolean ganti valid menjadi false, jika tidak lanjutkan validasi.


function validasiEmail($email)
{
   $valid = true;
   $atPos = strrpos($email, "@");
   if (is_bool($atPos) && !$atPos)
   {
      $valid = false;
   }
   else
   {
     //lanjutkan validasi disini
   }
}



Jika email tidak merupakan sebuah boolean, kita lanjutkan validasi, pecah email menjadi dua bagian dan pemecahnya adalah tanda at ( @ ). Bagian pertama kita anggap sebagai nama email dan bagian kedua kita anggap sebagai domain dari email. Setelah itu kita cek panjang dari nama dan domain dari email tersebut. Untuk bagian nama biasanya tidak lebih dari 64 karakter dan untuk panjang domain tidak lebih dari 255 karakter.



function validasiEmail($email)
{
   $valid = true;
   $atPos = strrpos($email, "@");
   if (is_bool($atPos) && !$atPos)
   {
      $valid = false;
   }
   else
   {
      $domain = substr($email, $atPos+1);
      $nama = substr($email, 0, $atPos);
      $panjangNama = strlen($local);
      $panjangDomain = strlen($domain);
      if ($panjangNama  < 1 || $panjangDomain  > 64)
      {
         // panjang nama melebihi standar
         $valid = false;
      }
      else if ($panjangDomain  < 1 || $panjangDomain  > 255)
      {
         // panjang domain melebihi standar
         $valid = false;
      }
   }
}



Dengan substring kita dapat mengambil hanya beberapa bagian dari string, string nama yang kita ambil adalah dari index 0 sampai posisi tanda at ( @ ), sedangkan string domain kita ambil dari posisi at ditambah satu sampai string itu habis. Atau jika kalian mau, kalian bisa menggunakan fungsi explode() atau split() yang disediakan oleh PHP.

Sekarang kita cek apakah string dari nama email diawali dan diakhiri dengan tanda titik ( . ). Atau ada dua tanda titik pada nama email dimana ini diharamkan. Disini kita mulai menggunakan regex atau regular expression agar validasi bisa lebih kuat. Kode dibawah ini akan mengakhiri artikel ini karena kode dibawah sudah lengkap.



function validasiEmail($email)
{
   $valid = true;
   $atPos = strrpos($email, "@");
   if (is_bool($atPos) && !$atPos)
   {
      $valid = false;
   }
   else
   {
      $domain = substr($email, $atPos+1);
      $nama = substr($email, 0, $atPos);
      $panjangNama = strlen($local);
      $panjangDomain = strlen($domain);
      if ($panjangNama  < 1 || $panjangDomain  > 64)
      {
         // panjang nama melebihi standar
         $valid = false;
      }
      else if ($panjangDomain  < 1 || $panjangDomain  > 255)
      {
         // panjang domain melebihi standar
         $valid = false;
      }

      else if ($nama[0] == '.' || $nama[$panjangNama-1] == '.')
      {
         // nama diawali dan diakhiri dengan tanda '.'
         $valid = false;
      }
      else if (preg_match('/\\.\\./', $nama))
      {
         // nama memiliki tanda '.' berurutan
         $valid = false;
      }
      else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
      {
         // karakter tidak valid di bagian domain
         $valid = false;
      }
      else if (preg_match('/\\.\\./', $domain))
      {
         // domain memiliki tanda '.' berurutan
         $valid = false;
      }

      else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$nama)))
      {
         //nama tidak valid
         if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$nama)))
         {
            //nama memiliki tanda petik
            $valid = false;
         }
      }

      return $valid;


   }
}




preg_match() adalah fungsi dalam PHP yang digunakan untuk mengecek apakah suatu string sudah sesuai dengan pola regex yang diberikan. Regex atau regular expression sendiri adalah suatu pola string yang diatur sedemikian rupa untuk mencocokan suatu string, baik itu kata, kalimat atau pola dalam kalimat. Dan fungsi diatas adalah fungsi lengkap dari sebuah email validasi yang diakhiri dengna mereturn nilai dari valid. Jika ada kesalahan dalam email, tentunya nilai variabel valid menjadi false, jika tidak, maka valid akan tetap bernilai true.

Terjemahan dari: http://www.linuxjournal.com/article/9585?page=0,1

"Om Santhi, Santhi, Santhi, Om"



Comments:

Ada 0 comments pada “Membuat Validasi Email Tingkat Lanjut dengan PHP”

Social Media


Facebook Page

Programming Tutorial


Info


Tips
Downloads
Friends
 
This Blog is proudly powered by Blogger.com | Template by Bali Web Development | Privacy Policy | Rise Up!!