logo Sipintek.com
Browse : Home / Pemrograman / PHP / Validasi Input Data, Mengecek Input Data Dari Form di PHP
Gambar Validasi Input Data Mengecek Input Data Dari Form di PHP

Validasi Input Data, Mengecek Input Data Dari Form di PHP

Published by I Gede Arya Surya Gita - Posted on Februari 26th, 2020 - 11 Comments

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 MaskFungsi
\ tMenghilangkan Tab di awal
\ nmenghilangkan baris baru di awal
\ rcarriage return
\ 0Menghilangkan angka 0 di awal
\ x0BMenghilangkan 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:

Gambar Contoh input salah pada form di php

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

Gambar Hasil input data setelah menggunakan fungsi trim, htmlspecialchars dan stripslashes di php

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:

Gambar coba input salah di form dengan menginputkan huruf di kolom no hp

Maka akan muncul pesan data no HP tidak valid:

Gambar hasil ketika salah input di kolom no hp

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!


gambar heroku alternatif

Tempat Upload Backend Web Node/Go yang Free


Gambar Autoload Composer, Cara Terbaik Memanggil Class di php

Autoload Composer, Cara Terbaik Memanggil Class di php


Gambar Apa Itu Composer PHP Fungsi dan Cara Installasinya

Apa Itu Composer PHP? Fungsi dan Cara Installasinya


Gambar Membuat Database Untuk Web CMS dengan MySQL #2

Membuat Database Untuk Web CMS dengan MySQL #2



11 tanggapan untuk “Validasi Input Data, Mengecek Input Data Dari Form di PHP”

  1. Justin berkata:

    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.

  2. Jonathan berkata:

    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!!

  3. 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.

  4. thanks. I’m still learning to make articles that are easy to understand, interesting and fun

  5. 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!

  6. Shirleen Hotman berkata:

    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.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *