Sama seperti Artikel - artikel sebelumnya yang membahas XTemplate, klik disini untuk membaca instalasi Xtemplate. Saya menekankan Validasi Form hendaknya kalian dilakukan pada sisi Server site (php, asp, jsp, dll) atau bila kalian menggunakan Javascript Validalation jangan lupa memvalidasi pada sisi pemroses, mengapa? karena javascript bersifat Client site jadi jika mode javascript pada Browser dimatikan tentu javascript validation menjadi tidak berguna, Bukannya bisa ditambahakan html 

<noscript>Maaf silahkan aktifkan Javascript pada browser anda.</noscript>

Memang benar pada sisi html kalian bisa menambahakan script tersebut akan tetapi bagaimana bila pengisian dilakukan Via Remote (pengisian tidak pada Form yang kalian sediakan.) tentu kalian ga' pengen website yang sudah kalian bangun dengan susah payah, dibuat ajang SPAM oleh orang - orang tertentu. Saya kombinasikan validasi sebuah form dengan menggunakan XTemplate pada artikel kali ini, OK sekarang kita coba buat yang sederhana dan sedikit ditambahkan beberapa keamanan.

1. Buat 1 file untuk tampilan website buat pada folder themes (seperti biasa Smile) dengan nama main.html

 

<form action="" method="post" name="frm_post">

<table width="500" border="0" cellspacing="1" cellpadding="1">

<tr>

<td width="70">Nama *</td>

<td width="10">:</td>

<td width="300"><input type="text" name="nama" id="nama" value="{nama}" /></td>

</tr>

<tr>

<td width="70">Email *</td>

<td width="10">:</td>

<td width="300"><input type="text" name="email" id="email" value="{email}" /></td>

</tr>

 <tr>

<td width="70" valign="top">Pesan *</td>

<td width="10" valign="top">:</td>

<td width="300"><textarea name="pesan" id="pesan" rows="5" cols="40">{pesan}</textarea></td>

</tr>

<tr>

<td colspan="3"><input type="submit" name="submit" id="submit" value="Submit"  /> <input type="reset" name="reset" id="reset" value="Batal"  /></td>

</tr>

</table>

</form>

 

Lihat pada masing value terdapat {nama}, {email}, {pesan} adalah nilai balik apabila Terdapat kesalahan penginputan, yang mengembalikan nilai tersebut adalah XTemplate (lihat ketenangan berwarna biru). 

2. Buat file yang memproses sekaliagus yang menampikan template

<?php

require_once( 'xtemplate.class.php' ); // class untuk Xtemplate

$tpl = new XTemplate('main.html', 'theme', null, 'main', true); // akses template yang pertama kali dengan nama main.html

$referer_uri = "http://localhost/form/"; // masukkan Host kalian pada variabel ini

    if($_POST[submit]){ //bila terdapat post submit kerjakan 

if($_SERVER['HTTP_REFERER'] == $referer_uri){ // untuk membandingkan haisl referer apakah dikirim dari domain kita

$nama  = $_POST['nama'];

$email = $_POST['email'];

$pesan = $_POST['pesan'];

if(!empty($nama) && strlen($nama) >= 4){ // nama hanya tidak boleh kosong dan minimal input 4 karakter

if(!empty($email) && filter_var($email, FILTER_VALIDATE_EMAIL)){ // Email tidak boleh kosong dan cek penusilan email apakah sudah benar

if(!empty($pesan)){ // Pesan tidak boleh kosong

$msg = "<div class=\"sukses\">Terima kasih <strong>$nama</strong>, pesan anda berhasil diinputkan.</div>"; // pesan yang akan ditampilkan bila seluruh filter berhasil dipenuhi.

}else{

$msg = "<div class=\"error\">Silahkan isi Pesan anda.</div>"; 

// pesan yang muncul ketika pesan kosong

$tpl->assign($_POST); //XTemplate akan mengembalikan hasil kiriman Post Agar tidak perlu menginput ulang seluruh Text Field

}

}else{                

$msg = "<div class=\"error\">Silahkan isi Email yang benar.</div>";// pesan yang muncul ketika email kosong/salah

$tpl->assign($_POST); //XTemplate akan mengembalikan hasil kiriman Post Agar tidak perlu menginput ulang seluruh Text Field

}

}else{

$msg = "<div class=\"error\">Silahkan isi Nama anda minimum 4 karakter.</div>"; // pesan yang muncul ketika nama kosong/kurang dari 4

$tpl->assign($_POST); //XTemplate akan mengembalikan hasil kiriman Post Agar tidak perlu menginput ulang seluruh Text Field

}

}else{

$msg = "<div class=\"error\">Silahkan Input pada halaman yang semestinya.</div>"; // pesan yang muncul ketika referer menangkap perbedaan Host yang diinput

$tpl->assign($_POST); //XTemplate akan mengembalikan hasil kiriman Post Agar tidak perlu menginput ulang seluruh Text Field

}

        $tpl->assign("MESSAGE", $msg); // Bagian dari XTemplate untuk menampilkan pada halaman website.

    }

 

$tpl->parse('main',600); // output parse main template

$tpl->out('main'); // output dari seluruh template

?>

Tentu teknik diatas tidak menjamin kalian 100% bebas SPAM meski kalian sudah melakukan Filtering valiabel, Referer Checker artikel ini hanya sebatas untuk mempersulit laju seseorang yang akan berbuat keisengan. Kalaian dapat menambahkan Captcha untuk tambahan security pada masing - masing Form input.

DEMO | DOWNLOAD