Hai Sipinter! Coding, coding, coding terus pokoknya sampai enek wkwkwkw, selamat datang di sesi Tutorial Pemrograman PHP dimana disini kita akan membahas cara membuat web dinamis dari dasar.
Kali ini kita akan membahas bagaimana cara mengecek data yang dimasukan user melalui form yang ada di web kita atau cara memvalidasi data form.
Proses validasi data merupakan proses yang penting, karena sering kesalahan atau error dalam program sering disebabkan karena input data yang salah.
Misal seharusnya kolom no HP di input dengan bilangan tapi karena ngantuk malah diisi dengan huruf, hal seperti ini sering terjadi dan pasti akan membuat web kita menyimpan data yang salah.
Form HTML hanya melakukan validasi tipe data yang umum saja, sehingga kita memerlukan validasi lanjutan agar program web yang kita buat dapat berjalan semestinya.
Kita akan mencoba melakukan validasi data kontak pengguna yang berisi nama, url web, no HP dan email.
Kita membuat form terlebih dahulu seperti di bawah yang akan kita validasi nilainya, seperti script di bawah:
<!DOCTYPE html>
<html>
<head>
<title>Kontak</title>
</head>
<body>
<form action="" method="post">
<label for="name">Nama : </label>
<input type="text" name="nama" maxlength="50" size="50" required>
<br/>
<br/>
<label for="name">No HP : </label>
<input type="text" name="no_hp" maxlength="15" size="15" required>
<br/>
<br/>
<label for="name">Url Web : </label>
<input type="text" name="url" maxlength="100" size="100" required>
<br/>
<br/>
<label for="name">Email : </label>
<input type="email" name="email" maxlength="100" size="100" required>
<br/>
<br/>
<input type="reset" name="reset" value="Reset">
<input type="submit" name="save" value="Save">
</form>
</body>
</html>
Setelah membuat form maka kita perlu menyaring data input dari kesalahan yang sering terjadi.
Menghilangkan Spasi, Tab, Garis baru, Angka 0 di Awal atau di akhir input
Seperti yang kalian tahu spasi di awal input dan di akhir input itu tidak berguna dan bisa menyebabkan kesalahan input data.
Kesalahan seperti ini sering terjadi karena adanya spasi di awal dan akhir itu sulit diketahui orang.
Kita dapat menghilangkan spasi dengan fungsi trim()
dengan aturan penulisan:
trim($data,”char mask”);
Char mask bersifat opsional dengan char mask kita dapat menentukan yang akan dihilangkan, dan jika tidak ditentukan semua akan dihilangkan fungsi trim.
Contoh char mask yaitu “\ t \ n \ r \ 0 \ x0B” dan berikut merupakan penjelasan setiap char mask:
Char Mask | Fungsi |
\ t | Menghilangkan Tab di awal |
\ n | menghilangkan baris baru di awal |
\ r | carriage return |
\ 0 | Menghilangkan angka 0 di awal |
\ x0B | Menghilangkan tab vertikal |
Menghilangkan Backslash Pada Input di PHP
Jika kita tidak menginginkan adanya backslash pada sebuah data gunakan fungsi stripsplash()
.
Jika data berupa text area kalian bisa menggunakan stripcslashes()
untuk mengizinkan adanya carakter c-like seperti \ n untuk baris baru ,\ t untuk tab dll.
kita dapat menggunakan fungsi stripsplash dengan aturan penulisan:
stripsplash($data);
Mengubah Spesial Karakter Menjadi HTML
Kita dapat mencegah seseorang melakukan hacking ke web yang kita buat dengan mengubah semua data input menjadi html.
Hal ini sangat penting kita lakukan agar program web yang kita buat tidak menjadi error, bahkan bisa di exploitasi oleh orang yang tidak bertanggung jawab hanya melalui form.
Kita dapat merubah data input menjadi html dengan menggunakan fungsi htmlspecialchars($data);
.
Contoh Perintah PHP Untuk Menyaring Kesalahan Input sederhana
Berikut merupakan kode untuk menyaring data dari form dimana kita dapat menggunakan variabel $_SERVER[“REQUEST_METHOD”], variabel ini akan terisi ketika kita mengirim data melalui form:
<!DOCTYPE html>
<html>
<head>
<title>Kontak</title>
</head>
<body>
<?php
function cek_input($data){
$data=trim($data);
$data=stripslashes($data);
$data=htmlspecialchars($data);
return $data;
}
if($_SERVER["REQUEST_METHOD"]=="POST"){
$nama=cek_input($_POST['nama']);
$no_hp=cek_input($_POST['no_hp']);
$url=cek_input($_POST['url']);
$email=cek_input($_POST['email']);
?>
<table border="1">
<tr>
<th>Kolom</th>
<th>input asli</th>
<th>Hasil input</th>
</tr>
<?php
echo "<tr><td>Nama</td><td>".$_POST['nama']."</td><td>".$nama."</td></tr>";
echo "<tr><td>No HP</td><td>".$_POST['no_hp']."</td><td>".$no_hp."</td></tr>";
echo "<tr><td>URL</td><td>".$_POST['url']."</td><td>".$url."</td></tr>";
echo "<tr><td>email</td><td>".$_POST['email']."</td><td>".$email."</td></tr>";
?>
</table>
<hr/>
<br/>
<br/>
<?php
}
?>
<form action="" method="post">
<label for="name">Nama : </label>
<input type="text" name="nama" maxlength="50" size="50" required>
<br/>
<br/>
<label for="name">No HP : </label>
<input type="text" name="no_hp" maxlength="15" size="15" required>
<br/>
<br/>
<label for="name">Url Web : </label>
<input type="text" name="url" maxlength="100" size="100" required>
<br/>
<br/>
<label for="name">Email : </label>
<input type="email" name="email" maxlength="100" size="100" required>
<br/>
<br/>
<input type="reset" name="reset" value="Reset">
<input type="submit" name="save" value="Save">
</form>
</body>
</html>
Jika tidak paham dengan function kunjungi: Membuat fungsi di PHP
Jika tidak mengerti cara penggunaan if kunjungi: Percabangan di PHP
Hasilnya jika kita menginputkan data asal seperti contoh dibawah:

Hasilnya data akan tetap seperti yang kita inginkan, seperti pada gambar:

Melakukan Validasi Data Angka di PHP
Seperti data no HP walaupun data ini disimpan dalam tipe data string namun data ini semua karakternya harus berupa angka atau bilangan.
Banyak sekali jenis data yang bertipe data string namun hanya berupa angka, seperti NIP, No HP, NPM, NIK dll.
Data seperti No HP berupa angka namun tidak untuk dihitung, sehingga jika kita menyimpannya dalam tipe data integer akan sangat membebani program yang akan kita buat, maka lebih cocok disimpan dalam tipe data string.
Sehingga kita perlu memastikan bahwa data no HP yang diinputkan adalah semuanya angka dengan cara menggunakan fungsi preg_match()
, dengan aturan penulisan:
preg_match(“pattern”,$data);
Fungsi ini mencocokkan pattern yang kita buat dengan sebuah data string, yang menghasilkan nilai boolean true atau false.
Pattern sendiri berupa kumpulan dari meta karakter, contoh pattern untuk mengecek data berupa angka adalah “/^[0-9]*$/”.
Berikut merupakan contoh cara mengecek apakah sebuah data string berupa angka semua dengan fungsi preg_math() di php:
<!DOCTYPE html>
<html>
<head>
<title>Kontak</title>
</head>
<body>
<?php
function cek_input($data){
$data=trim($data);
$data=stripslashes($data);
$data=htmlspecialchars($data);
return $data;
}
if($_SERVER["REQUEST_METHOD"]=="POST"){
$nama=cek_input($_POST['nama']);
$no_hp=cek_input($_POST['no_hp']);
$url=cek_input($_POST['url']);
$email=cek_input($_POST['email']);
?>
<table border="1">
<tr>
<th>Kolom</th>
<th>input asli</th>
<th>Hasil input</th>
</tr>
<?php
echo "<tr><td>Nama</td><td>".$_POST['nama']."</td><td>".$nama."</td></tr>";
echo "<tr><td>No HP</td><td>".$_POST['no_hp']."</td><td>".$no_hp."</td></tr>";
echo "<tr><td>URL</td><td>".$_POST['url']."</td><td>".$url."</td></tr>";
echo "<tr><td>email</td><td>".$_POST['email']."</td><td>".$email."</td></tr>";
?>
</table>
<hr/>
<?php
if (preg_match("/^[0-9]*$/", $no_hp)) {
echo "<span style='color:red'>No HP valid</span>";
} else {
echo "<span style='color:red'>No HP tidak valid</span>";
}
?>
<br/>
<br/>
<?php
}
?>
<form action="" method="post">
<label for="name">Nama : </label>
<input type="text" name="nama" maxlength="50" size="50" required>
<br/>
<br/>
<label for="name">No HP : </label>
<input type="text" name="no_hp" maxlength="15" size="15" required>
<br/>
<br/>
<label for="name">Url Web : </label>
<input type="text" name="url" maxlength="100" size="100" required>
<br/>
<br/>
<label for="name">Email : </label>
<input type="email" name="email" maxlength="100" size="100" required>
<br/>
<br/>
<input type="reset" name="reset" value="Reset">
<input type="submit" name="save" value="Save">
</form>
</body>
</html>
Berikut adalah hasilnya, ketika ada huruf yang diinputkan pada kolom no HP:

Maka akan muncul pesan data no HP tidak valid:

Sekian postingan kali ini jika ada kesalahan saya mohon maaf yang sebesar-besarnya.
Jika memiliki pertanyaan atau masukan jangan sungkan untuk meninggalkan komentar d bawah!
“Nikmati sebuah proses mulai dari belajar, mengembangkan sampai kita bisa berbagi untuk orang lain”
Bantu kami dengan share postingan ini ke semua social media kamu hehehe :D!
Long time supporter, and thought I’d drop a comment.
Your wordpress site is very sleek – hope you don’t mind
me asking what theme you’re using? (and don’t mind if I steal
it? :P)
I just launched my site –also built in wordpress like yours– but the theme slows (!) the
site down quite a bit.
In case you have a minute, you can find it by searching for
“royal cbd” on Google (would appreciate any feedback) – it’s still in the
works.
Keep up the good work– and hope you all take care of yourself during the coronavirus scare!
hi justin, thank you for the appreciation, I built this theme myself
and I know there are still many shortcomings of this theme.
I have visited your website, I think your website is a little slow but there are many factors that make it possible, such as plugins, themes, and hosting.
sorry if my English is bad.
Oh my goodness! Amazing article dude! Thanks,
However I am going through difficulties with your RSS. I don’t understand
the reason why I can’t subscribe to it. Is there anybody having identical RSS issues?
Anybody who knows the solution can you kindly respond?
Thanx!!
thanks jonathan
This website does not yet support subscription features, we only focus on writing
maybe someday
I was very pleased to uncover this page. I want to
to thank you for ones time just for this fantastic read!!
I definitely really liked every part of it and I have you book-marked to look at new stuff in your site.
I am very happy that this page was useful for you. This makes me even more excited about creating new programming page.
thanks. I’m still learning to make articles that are easy to understand, interesting and fun
It’s a shame you don’t have a donate button! I’d certainly donate to this outstanding blog!
I guess for now i’ll settle for bookmarking and adding your RSS feed to my Google account.
I look forward to new updates and will share this blog with my Facebook
group. Talk soon!
Thank you for the appreciation.
I’m just sharing and I’m glad this post was useful to you
Hi, i read your blog from time to time and i own a similar one and i was just curious if you get a lot of spam responses?
If so how do you reduce it, any plugin or anything you can recommend?
I get so much lately it’s driving me insane so any assistance is very much appreciated.
if you use the comment system from wordpress you can try the aksimet plugin.
But many wordpress users choose to turn off the default wordpress comment feature and use a more reliable third-party commenting system such as disqus.