Tuesday 8 March 2016

Vallidasi Input Data dengan PHP



Form validation adalah sebuah form yang mampu melakukan validasi pada tiap inputan pada form. misal nya jika seorang user belum melakukan pengisian nama dan saat user mengklik tombol sumbit maka akan muncul pemberitahuan bahwa user belum mengisi nama pada form .
langkah pertama kita akan membuat sebuah form sederhana di mana user akan menginput data pada form ini. buat file form.php dan aksi-form.php sebagai pengecek kevalitan inputan oleh user.

Validasi Form dengan PHP

Di tutorial php ini akan dijelaskan cara melakukan validasi form dengan PHP. Ada dua hal yang terkait dengan validasi form. Yang pertama adalah melakukan validasi data yang diinputkan ke form, dan yang kedua adalah menampilkan error message jika data yang diinput tidak valid. Di bawah adalah contoh validasi yang simpel, yang hanya mengecek apakah semua data diinput dan tidak kosong.
  1. <!-- file simple-validasi.php --->  
  2. <?php  
  3.     if($_POST){  
  4.         $nama = $_POST['nama'];  
  5.         $email = $_POST['email'];  
  6.         $alamat = $_POST['alamat'];  
  7.         $kota = $_POST['kota'];  
  8.         $kodePos = $_POST['kode_pos'];  
  9.         if(empty($nama) || empty($email) || empty($alamat) || empty($kota) || empty($kodePos)){  
  10.             echo '<strong>Data tidak komplit</strong>';  
  11.         }else{  
  12.             //prosess data  
  13.         }  
  14.     }  
  15. ?>  
  16. <form name="form-name" method="post" action="">  
  17.     <dl>  
  18.       <dt>Nama:</dt>  
  19.       <dd>  
  20.     <input name="nama" id="nama" type="text" />  
  21.       </dd>  
  22.       <dt>Email:</dt>  
  23.       <dd>  
  24.     <input name="email" id="email" type="text" />  
  25.       </dd>  
  26.       <dt>Alamat:</dt>  
  27.       <dd>  
  28.     <input name="alamat" id="alamat" type="text" />  
  29.       </dd>  
  30.       <dt>Kota:</dt>  
  31.       <dd>  
  32.     <input name="kota" id="kota" type="text" />  
  33.       </dd>  
  34.       <dt>Kode POS:</dt>  
  35.       <dd>  
  36.     <input name="kode_pos" id="kode_pos" type="text" />  
  37.       </dd>  
  38.     <dt></dt>  
  39.       <dd>  
  40.     <input name="submit" id="submit" type="Submit" value="Submit" />  
  41.       </dd>  
  42.     </dl>  
  43. </form>  
Jika user tidak memasukkan salah satu data maka akan ditampilkan pesan "Data tidak komplit", seperti di bawah:
Simple form validation
Dengan script di atas, setiap kali user lupa memasukan salah satu data maka user harus menginput ulang semua data. Agar data yang sebelumnya diinputkan kembali tampil di form pada saat user melakukan kesalahan, ubah script di atas menjadi:
  1. <?php  
  2.     if($_POST){  
  3.         $nama = $_POST['nama'];  
  4.         $email = $_POST['email'];  
  5.         $alamat = $_POST['alamat'];  
  6.         $kota = $_POST['kota'];  
  7.         $kodePos = $_POST['kode_pos'];  
  8.         if(empty($nama) || empty($email) || empty($alamat) || empty($kota) || empty($kodePos)){  
  9.             echo '<strong>Data tidak komplit</strong>';  
  10.         }else{  
  11.             //prosess data  
  12.         }  
  13.     }  
  14. ?>  
  15. <form name="form-name" method="post" action="">  
  16.     <dl>  
  17.       <dt>Nama:</dt>  
  18.       <dd>  
  19.     <input name="nama" id="nama" type="text" value="<?php echo isset($_POST['nama']) ? $_POST['nama'] : '';?>" />  
  20.       </dd>  
  21.       <dt>Email:</dt>  
  22.       <dd>  
  23.     <input name="email" id="email" type="text" value="<?php echo isset($_POST['email']) ? $_POST['email'] : '';?>" />  
  24.       </dd>  
  25.       <dt>Alamat:</dt>  
  26.       <dd>  
  27.     <input name="alamat" id="alamat" type="text" value="<?php echo isset($_POST['alamat']) ? $_POST['alamat'] : '';?>" />  
  28.       </dd>  
  29.       <dt>Kota:</dt>  
  30.       <dd>  
  31.     <input name="kota" id="kota" type="text" value="<?php echo isset($_POST['kota']) ? $_POST['kota'] : '';?>" />  
  32.       </dd>  
  33.       <dt>Kode POS:</dt>  
  34.       <dd>  
  35.     <input name="kode_pos" id="kode_pos" type="text" value="<?php echo isset($_POST['kode_pos']) ? $_POST['kode_pos'] : '';?>" />  
  36.       </dd>  
  37.        <dt></dt>  
  38.       <dd>  
  39.     <input name="submit" id="submit" type="Submit" value="Submit" />  
  40.       </dd>  
  41.     </dl>  
  42. </form>  
Script diubah pada line 19, 23, 27, 31, 35 dengan menambahkan attribute value di masing masing text field yang diisi dengan nilai form sebelumnya. Penampilan error message juga bisa diubah menjadi lebih manis dan lebih user friendly seperti di bawah:
Validasi Form PHP
Ubahlah script di atas menjadi:
  1. <?php  
  2.     if($_POST){  
  3.         $nama = $_POST['nama'];  
  4.         $email = $_POST['email'];  
  5.         $alamat = $_POST['alamat'];  
  6.         $kota = $_POST['kota'];  
  7.         $kodePos = $_POST['kode_pos'];  
  8.     $error = array();  
  9.         if(empty($nama)){  
  10.       $error['nama'] = 'Nama tidak boleh kosong';  
  11.         }  
  12.     if(empty($email)){  
  13.       $error['email'] = 'Email tidak boleh kosong';  
  14.     }  
  15.     if(empty($alamat)){  
  16.       $error['alamat'] = 'Alamat tidak boleh kosong';  
  17.     }  
  18.     if(empty($kota)){  
  19.       $error['kota'] = 'Kota tidak boleh kosong';  
  20.     }  
  21.     if(empty($kodePos)){  
  22.       $error['kode_pos'] = 'Kode pos tidak boleh kosong';  
  23.     }  
  24.     if(empty($error)){  
  25.             //prosess data  
  26.         }  
  27.     }  
  28. ?>  
  29. <form name="form-name" method="post" action="">  
  30.     <dl>  
  31.       <dt>Nama:</dt>  
  32.       <dd>  
  33.     <input name="nama" id="nama" type="text" value="<?php echo isset($_POST['nama']) ? $_POST['nama'] : '';?>" />  
  34.     <div style="color:red"><?php echo isset($error['nama']) ? $error['nama'] : '';?></div>  
  35.       </dd>  
  36.       <dt>Email:</dt>  
  37.       <dd>  
  38.     <input name="email" id="email" type="text" value="<?php echo isset($_POST['email']) ? $_POST['email'] : '';?>" />  
  39.     <div style="color:red"><?php echo isset($error['email']) ? $error['email'] : '';?></div>  
  40.       </dd>  
  41.       <dt>Alamat:</dt>  
  42.       <dd>  
  43.     <input name="alamat" id="alamat" type="text" value="<?php echo isset($_POST['alamat']) ? $_POST['alamat'] : '';?>" />  
  44.     <div style="color:red"><?php echo isset($error['alamat']) ? $error['alamat'] : '';?></div>  
  45.       </dd>  
  46.       <dt>Kota:</dt>  
  47.       <dd>  
  48.     <input name="kota" id="kota" type="text" value="<?php echo isset($_POST['kota']) ? $_POST['kota'] : '';?>" />  
  49.     <div style="color:red"><?php echo isset($error['kota']) ? $error['kota'] : '';?></div>  
  50.       </dd>  
  51.       <dt>Kode POS:</dt>  
  52.       <dd>  
  53.     <input name="kode_pos" id="kode_pos" type="text" value="<?php echo isset($_POST['kode_pos']) ? $_POST['kode_pos'] : '';?>" />  
  54.     <div style="color:red"><?php echo isset($error['kode_pos']) ? $error['kode_pos'] : '';?></div>  
  55.       </dd>  
  56.       <dt></dt>  
  57.       <dd>  
  58.     <input name="submit" id="submit" type="Submit" value="Submit" />  
  59.       </dd>  
  60.     </dl>  
  61. </form>  

JIka file untuk menyimpan/memproses data atau file untuk memvalidasi data berbeda dengan file untuk menampilkan form, dengan kata lain menggunakan dua file berbeda maka bisa menggunakan bantuan session. Gunakan script php seperti di bawah:
  1. <!-- file contact-form.php-->  
  2. <?php  
  3. session_start();  
  4. if(isset($_SESSION['error'])){  
  5. $error = $_SESSION['error'];  
  6. $_POST = $_SESSION['post'];  
  7. unset($_SESSION['error']);  
  8. unset($_SESSION['post']);  
  9. }  
  10. ?>  
  11. <form name="form-name" method="post" action="save-form.php">  
  12.     <dl>  
  13.       <dt>Nama:</dt>  
  14.       <dd>  
  15.     <input name="nama" id="nama" type="text" value="<?php echo isset($_POST['nama']) ? $_POST['nama'] : '';?>" />  
  16.     <div style="color:red"><?php echo isset($error['nama']) ? $error['nama'] : '';?></div>  
  17.       </dd>  
  18.       <dt>Email:</dt>  
  19.       <dd>  
  20.     <input name="email" id="email" type="text" value="<?php echo isset($_POST['email']) ? $_POST['email'] : '';?>" />  
  21.     <div style="color:red"><?php echo isset($error['email']) ? $error['email'] : '';?></div>  
  22.       </dd>  
  23.       <dt>Alamat:</dt>  
  24.       <dd>  
  25.     <input name="alamat" id="alamat" type="text" value="<?php echo isset($_POST['alamat']) ? $_POST['alamat'] : '';?>" />  
  26.     <div style="color:red"><?php echo isset($error['alamat']) ? $error['alamat'] : '';?></div>  
  27.       </dd>  
  28.       <dt>Kota:</dt>  
  29.       <dd>  
  30.     <input name="kota" id="kota" type="text" value="<?php echo isset($_POST['kota']) ? $_POST['kota'] : '';?>" />  
  31.     <div style="color:red"><?php echo isset($error['kota']) ? $error['kota'] : '';?></div>  
  32.       </dd>  
  33.       <dt>Kode POS:</dt>  
  34.       <dd>  
  35.     <input name="kode_pos" id="kode_pos" type="text" value="<?php echo isset($_POST['kode_pos']) ? $_POST['kode_pos'] : '';?>" />  
  36.     <div style="color:red"><?php echo isset($error['kode_pos']) ? $error['kode_pos'] : '';?></div>  
  37.       </dd>  
  38.       <dt></dt>  
  39.       <dd>  
  40.     <input name="submit" id="submit" type="Submit" value="Submit" />  
  41.       </dd>  
  42.     </dl>  
  43. </form>     
  1. <?php  
  2. //file save-form.php  
  3. session_start();  
  4.     if($_POST){  
  5.         $nama = $_POST['nama'];  
  6.         $email = $_POST['email'];  
  7.         $alamat = $_POST['alamat'];  
  8.         $kota = $_POST['kota'];  
  9.         $kodePos = $_POST['kode_pos'];  
  10.     $error = array();  
  11.         if(empty($nama)){  
  12.       $error['nama'] = 'Nama tidak boleh kosong';  
  13.         }  
  14.     if(empty($email)){  
  15.       $error['email'] = 'Email tidak boleh kosong';  
  16.     }  
  17.     if(empty($alamat)){  
  18.       $error['alamat'] = 'Alamat tidak boleh kosong';  
  19.     }  
  20.     if(empty($kota)){  
  21.       $error['kota'] = 'Kota tidak boleh kosong';  
  22.     }  
  23.     if(empty($kodePos)){  
  24.       $error['kode_pos'] = 'Kode pos tidak boleh kosong';  
  25.     }  
  26.     if(empty($error)){  
  27.             //prosess data  
  28.         }else{  
  29.         $_SESSION['error'] = $error;  
  30.         $_SESSION['post'] = $_POST;  
  31.         header("location: contact-form.php");  
  32.     }  
  33.     }  
  34. ?>   

Selain mengecek apakah data yang masukkan tidak kosong, anda juga bisa melakukan validasi yang lebih detail.

Validasi Email Address

Untuk memvalidasi email address bisa menggunakan regular expression, seperti script di bawah :
  1. <?php  
  2.   $emailPattern = '/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/';  
  3.   $email = 'tutorials@myphptutorials.com';  
  4.   var_dump(preg_match($emailPattern$email)); //hasil true  
  5.   $email = 'buka email';  
  6.   var_dump(preg_match($emailPattern$email)); // hasil false  
  7. ?>  

Validasi Kode POS

Kode pos terdiri dari 5 digit angka atau 5 digit plus 4 digit di belakang, misal: 80361 atau 60612-0344. Untuk memvalidasi kode pos gunakan script di bawah:
  1. <?php  
  2.   $patenKodePos = '/^\d{5}([\-]\d{4})?$/';  
  3.   $kodePos = '80461';  
  4.   var_dump(preg_match($patenKodePos$kodePos)); //hasil true  
  5.   $kodePos = '60612-0344';  
  6.   var_dump(preg_match($patenKodePos$kodePos)); //hasil true  
  7.   $kodePos = '123456';  
  8.   var_dump(preg_match($patenKodePos$kodePos)); //hasil false  
  9.   $kodePos = 'abcdef';  
  10.   var_dump(preg_match($patenKodePos$kodePos)); //hasil false  
  11. ?>  
Masih banyak lagi validasi yand bisa dilakukan. Untuk validasi form data yang lain bisa ditanyakan di http://ask.myphptutorials.com atau melalui comment form di bawah.

0 comments:

Post a Comment