Categories: Tutorial Php

Tutorial PHP : Validasi Form dengan PHP

Validasi data yang diinput dari sebuah form sangat diperlukan dikebanyakan applikasi web. Mengapa validasi form sangat diperlukan? Misalkan, anda memiliki sebuah contact form di website anda dan meminta masukan email, apa gunanya jika email yang dimasukkan tidak valid. Contoh lain, jika sebuah online shop yang meminta masukan shipping address, dan pengguna memasukkan kode pos berupa text bukan digit angka maka pengelola website tidak bisa mengirim barang yang dibeli oleh pengguna.

Tipe Validasi Form

Ada dua tipe validasi form, validasi client side dan server side. Validasi client side bisa dilakukan menggunakan javascript. Validasi client side sangatlah tidak dianjurkan. Seseorang pengguna bisa saja mematikan javascript dan validasi client side tidak akan berjalan. Karena javascript tidak akan dieksekusi jika javascript dimatikan. Disinilah validasi server side diperlukan. Validasi server side akan tetap berkerja, tidak peduli apapun. Validasi server side bisa dilakukan menggunakan PHP, Perl, ASP, JSP dan bahasa scripting lainnya.

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.

    <!-- file simple-validasi.php --->  
    <?php  
        if($_POST){  
            $nama = $_POST['nama'];  
            $email = $_POST['email'];  
            $alamat = $_POST['alamat'];  
            $kota = $_POST['kota'];  
            $kodePos = $_POST['kode_pos'];  
            if(empty($nama) || empty($email) || empty($alamat) || empty($kota) || empty($kodePos)){  
                echo '<strong>Data tidak komplit</strong>';  
            }else{  
                //prosess data  
            }  
        }  
    ?>  

<form name="form-name" method="post" action-xhr="#">  

<dl>  

<dt>Nama:</dt>

  

<dd>  
        <input name="nama" id="nama" type="text" />  
          </dd>

  

<dt>Email:</dt>

  

<dd>  
        <input name="email" id="email" type="text" />  
          </dd>

  

<dt>Alamat:</dt>

  

<dd>  
        <input name="alamat" id="alamat" type="text" />  
          </dd>

  

<dt>Kota:</dt>

  

<dd>  
        <input name="kota" id="kota" type="text" />  
          </dd>

  

<dt>Kode POS:</dt>

  

<dd>  
        <input name="kode_pos" id="kode_pos" type="text" />  
          </dd>

  

<dt></dt>

  

<dd>  
        <input name="submit" id="submit" type="Submit" value="Submit" />  
          </dd>

  
        </dl>

  
    </form>

  

Jika user tidak memasukkan salah satu data maka akan ditampilkan pesan “Data tidak komplit”, seperti di bawah:

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:

    <?php  
        if($_POST){  
            $nama = $_POST['nama'];  
            $email = $_POST['email'];  
            $alamat = $_POST['alamat'];  
            $kota = $_POST['kota'];  
            $kodePos = $_POST['kode_pos'];  
            if(empty($nama) || empty($email) || empty($alamat) || empty($kota) || empty($kodePos)){  
                echo '<strong>Data tidak komplit</strong>';  
            }else{  
                //prosess data  
            }  
        }  
    ?>  

<form name="form-name" method="post" action-xhr="#">  

<dl>  

<dt>Nama:</dt>

  

<dd>  
        <input name="nama" id="nama" type="text" value="<?php echo isset($_POST['nama']) ? $_POST['nama'] : '';?>" />  
          </dd>

  

<dt>Email:</dt>

  

<dd>  
        <input name="email" id="email" type="text" value="<?php echo isset($_POST['email']) ? $_POST['email'] : '';?>" />  
          </dd>

  

<dt>Alamat:</dt>

  

<dd>  
        <input name="alamat" id="alamat" type="text" value="<?php echo isset($_POST['alamat']) ? $_POST['alamat'] : '';?>" />  
          </dd>

  

<dt>Kota:</dt>

  

<dd>  
        <input name="kota" id="kota" type="text" value="<?php echo isset($_POST['kota']) ? $_POST['kota'] : '';?>" />  
          </dd>

  

<dt>Kode POS:</dt>

  

<dd>  
        <input name="kode_pos" id="kode_pos" type="text" value="<?php echo isset($_POST['kode_pos']) ? $_POST['kode_pos'] : '';?>" />  
          </dd>

  

<dt></dt>

  

<dd>  
        <input name="submit" id="submit" type="Submit" value="Submit" />  
          </dd>

  
        </dl>

  
    </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:

Ubahlah script di atas menjadi:

    <?php if($_POST){ $nama = $_POST['nama']; $email = $_POST['email']; $alamat = $_POST['alamat']; $kota = $_POST['kota']; $kodePos = $_POST['kode_pos']; $error = array(); if(empty($nama)){ $error['nama'] = 'Nama tidak boleh kosong'; } if(empty($email)){ $error['email'] = 'Email tidak boleh kosong'; } if(empty($alamat)){ $error['alamat'] = 'Alamat tidak boleh kosong'; } if(empty($kota)){ $error['kota'] = 'Kota tidak boleh kosong'; } if(empty($kodePos)){ $error['kode_pos'] = 'Kode pos tidak boleh kosong'; } if(empty($error)){ //prosess data } } ?>  

<form name="form-name" method="post" action-xhr="#">  

<dl>  

<dt>Nama:</dt>

  

<dd>  
        <input name="nama" id="nama" type="text" value="<?php echo isset($_POST['nama']) ? $_POST['nama'] : '';?>" />  

<div style="color:red"><?php echo isset($error['nama']) ? $error['nama'] : '';?></div>

  
          </dd>

  

<dt>Email:</dt>

  

<dd>  
        <input name="email" id="email" type="text" value="<?php echo isset($_POST['email']) ? $_POST['email'] : '';?>" />  

<div style="color:red"><?php echo isset($error['email']) ? $error['email'] : '';?></div>

  
          </dd>

  

<dt>Alamat:</dt>

  

<dd>  
        <input name="alamat" id="alamat" type="text" value="<?php echo isset($_POST['alamat']) ? $_POST['alamat'] : '';?>" />  

<div style="color:red"><?php echo isset($error['alamat']) ? $error['alamat'] : '';?></div>

  
          </dd>

  

<dt>Kota:</dt>

  

<dd>  
        <input name="kota" id="kota" type="text" value="<?php echo isset($_POST['kota']) ? $_POST['kota'] : '';?>" />  

<div style="color:red"><?php echo isset($error['kota']) ? $error['kota'] : '';?></div>

  
          </dd>

  

<dt>Kode POS:</dt>

  

<dd>  
        <input name="kode_pos" id="kode_pos" type="text" value="<?php echo isset($_POST['kode_pos']) ? $_POST['kode_pos'] : '';?>" />  

<div style="color:red"><?php echo isset($error['kode_pos']) ? $error['kode_pos'] : '';?></div>

  
          </dd>

  

<dt></dt>

  

<dd>  
        <input name="submit" id="submit" type="Submit" value="Submit" />  
          </dd>

  
        </dl>

  
    </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:

<?php session_start(); if(isset($_SESSION['error'])){ $error = $_SESSION['error']; $_POST = $_SESSION['post']; unset($_SESSION['error']); unset($_SESSION['post']); } ?>  

<form name="form-name" method="post" action="save-form.php">  

<dl>  

<dt>Nama:</dt>

  

<dd>  
    <input name="nama" id="nama" type="text" value="<?php echo isset($_POST['nama']) ? $_POST['nama'] : '';?>" />  

<div style="color:red"><?php echo isset($error['nama']) ? $error['nama'] : '';?></div>

  
      </dd>

  

<dt>Email:</dt>

  

<dd>  
    <input name="email" id="email" type="text" value="<?php echo isset($_POST['email']) ? $_POST['email'] : '';?>" />  

<div style="color:red"><?php echo isset($error['email']) ? $error['email'] : '';?></div>

  
      </dd>

  

<dt>Alamat:</dt>

  

<dd>  
    <input name="alamat" id="alamat" type="text" value="<?php echo isset($_POST['alamat']) ? $_POST['alamat'] : '';?>" />  

<div style="color:red"><?php echo isset($error['alamat']) ? $error['alamat'] : '';?></div>

  
      </dd>

  

<dt>Kota:</dt>

  

<dd>  
    <input name="kota" id="kota" type="text" value="<?php echo isset($_POST['kota']) ? $_POST['kota'] : '';?>" />  

<div style="color:red"><?php echo isset($error['kota']) ? $error['kota'] : '';?></div>

  
      </dd>

  

<dt>Kode POS:</dt>

  

<dd>  
    <input name="kode_pos" id="kode_pos" type="text" value="<?php echo isset($_POST['kode_pos']) ? $_POST['kode_pos'] : '';?>" />  

<div style="color:red"><?php echo isset($error['kode_pos']) ? $error['kode_pos'] : '';?></div>

  
      </dd>

  

<dt></dt>

  

<dd>  
    <input name="submit" id="submit" type="Submit" value="Submit" />  
      </dd>

  
    </dl>

  
</form>

 
    <?php //file save-form.php session_start(); if($_POST){ $nama = $_POST['nama']; $email = $_POST['email']; $alamat = $_POST['alamat']; $kota = $_POST['kota']; $kodePos = $_POST['kode_pos']; $error = array(); if(empty($nama)){ $error['nama'] = 'Nama tidak boleh kosong'; } if(empty($email)){ $error['email'] = 'Email tidak boleh kosong'; } if(empty($alamat)){ $error['alamat'] = 'Alamat tidak boleh kosong'; } if(empty($kota)){ $error['kota'] = 'Kota tidak boleh kosong'; } if(empty($kodePos)){ $error['kode_pos'] = 'Kode pos tidak boleh kosong'; } if(empty($error)){ //prosess data }else{ $_SESSION['error'] = $error; $_SESSION['post'] = $_POST; header("location: contact-form.php"); } } ?>   

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 :

    <?php $emailPattern = '/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/'; $email = 'tutorials@myphptutorials.com'; var_dump(preg_match($emailPattern, $email)); //hasil true $email = 'buka email'; var_dump(preg_match($emailPattern, $email)); // hasil false ?>  

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:

    <?php $patenKodePos = '/^\d{5}([\-]\d{4})?$/'; $kodePos = '80461'; var_dump(preg_match($patenKodePos, $kodePos)); //hasil true $kodePos = '60612-0344'; var_dump(preg_match($patenKodePos, $kodePos)); //hasil true $kodePos = '123456'; var_dump(preg_match($patenKodePos, $kodePos)); //hasil false $kodePos = 'abcdef'; var_dump(preg_match($patenKodePos, $kodePos)); //hasil false ?>  

Masih banyak lagi validasi yand bisa dilakukan. Silahkan baca contoh validasi lainnya di blog sourcecodeaplikasi.info

Demikian yang dapat kami share kepada sobat source code aplikasi pada kesempatan ini, semoga dapat bermanfaat dan bisa menjadi referensi pemrograman bagi anda. Jangan lupa like Fan Page kami, dan SUBSCRIBE Channel Youtube kami untuk dapatkan update source code aplikasi terbaru.
Ahmad Code

Recent Posts

Source Code Aplikasi SMS Gateway Sederhana dengan PHP

selain menggunakan email, contact di dunia mayapun merambah dengan sistem sms gateway, dan yang sering…

4 hours ago

Source Code Aplikasi Sistem Rekam Medis PHP+MYSQL

dalam dunia medispun telah menggunakan system komputasi, berupa aplikasi berbasis desktop maupun under web. kali…

10 hours ago

Source code aplikasi managemen RT-RW berbasis website

Aplikasi web merupakan salah satu media yang tepat untuk memberikan informasi kepada warga atau masyarakat…

16 hours ago

Source code Aplikasi Sistem Informasi Akademik Sekolah Menggunkan PHP MySQL

Aplikasi Sistem Informasi Akedemik Sekolah menggunkan PHP MySQl atau berbasis web ini merupakan sebuah sebuah…

22 hours ago

Source Code Aplikasi Website Portal Menggunakan PHP MySQL

Pada kesempatan ini saya kembali membagikan buat anda pencinta aplikasi berbasis web yaitu source kode…

1 day ago

Source code Aplikasi Website Pendaftaran Online Menggunakan PHP Mysql

Buat sobat semua yang lagi membutuhkan sedikit pencerahan tentang membuat website sistem pendaftaran online, pada…

1 day ago