Membuat Form Contact dengan PHP Captcha

0 30

Bila memungkinkan pengguna memasukkan data ke dalam website kita, kita perlu mengecek apakah data tersebut dimasukkan oleh manusia. Jika tidak, orang akan menggunakan robot untuk mendorong sebagian besar data yang tidak diinginkan ke situs web. Ini akan menyebabkan banyak masalah seperti serangan XSS atau meningkatkan beban server ke bawah website. CAPTCHA adalah salah satu metode untuk mencegah agar robot tidak memasukkan data. CAPTCHA bisa berbasis teks, berbasis audio atau grafis berbasis kode acak yang dihasilkan secara dinamis. Saat mengirimkan input pengguna, kode ini akan menjadi wajib yang akan membantu menangkap robot yang tidak masuk kode captcha.

Dalam tutorial ini, saya memiliki formulir kontak untuk mendapatkan masukan pengguna. Formulir ini mencakup kolom nama, email, pesan dan bidang pesan untuk mendapatkan pesan dari pengguna. Saya telah membuat kode captcha acak dan menyimpannya dalam satu sesi. Kode captcha ini akan ditampilkan dalam form kontak yang harus dimasukkan oleh pengguna untuk mengirimkan pesan mereka. Saya memiliki validasi sisi server untuk memeriksa apakah kode tersebut tidak kosong dan valid.

Kode PHP untuk membuat CAPTCHA

Pada bagian ini, saya membahas kode PHP untuk membuat kode CAPTCHA untuk disimpan dalam variabel sesi. Saya memulai session untuk menyimpan captcha yang dibuat secara dinamis menggunakan fungsi rand PHP (). Saya telah membuat layer target gambar dan menulis kode acak. Gambar captcha JPEG ini akan ditampilkan dalam form kontak. Pembuatan gambar dan kode ukuran ditampilkan seperti di bawah ini.

<?php
session_start();
$random_alpha = md5(rand());
$captcha_code = substr($random_alpha, 0, 6);
$_SESSION["captcha_code"] = $captcha_code;
$target_layer = imagecreatetruecolor(70,30);
$captcha_background = imagecolorallocate($target_layer, 255, 160, 119);
imagefill($target_layer,0,0,$captcha_background);
$captcha_text_color = imagecolorallocate($target_layer, 0, 0, 0);
imagestring($target_layer, 5, 5, 5, $captcha_code, $captcha_text_color);
header("Content-type: image/jpeg");
imagejpeg($target_layer);
?>

Tambahkan captcha ke dalam Formulir Kontak HTML

Kode ini menunjukkan bentuk kontak HTML dengan kode CAPTCHA.

<html>
<head>
<title>Contact Us Form</title>
<link rel="stylesheet" type="text/css" href="styles.css" />
</head>
<body>
<form name="frmContact" method="post" action="">
<div class="message"><?php if(isset($message)) { echo $message; } ?></div>
<table border="0" cellpadding="10" cellspacing="1" width="500" align="center">
<tr class="tableheader">
<td colspan="2">Enter Contact Information</td>
</tr>
<tr class="tablerow">
<td>Name<br/><input type="text" name="userName"></td>
<td>Email<br/><input type="text" name="userEmail"></td>
</tr>
<tr class="tablerow">
<td colspan="2">Subject<br/><input type="text" name="subject" size="73"></td>
</tr>
<tr class="tablerow">
<td colspan="2">Content<br/><textarea name="content" cols="60" rows="6"></textarea></td>
</tr>
<tr class="tablerow">
<td colspan="2">Captcha Code<br/><input name="captcha_code" type="text"><br>
<img src="captcha_code.php" /></td>
</tr>
<tr class="tableheader">
<td align="center" colspan="2"><input type="submit" name="submit" value="Submit"></td>
</tr>
</table>
</form>
</body>
</html>

Bandingkan Captcha Code

Pada form submit, kita harus memverifikasi kode captcha, dengan membandingkannya dengan variabel $ _SESSION yang sesuai. Jika cocok ditemukan, maka, pengguna dikenali sebagai manusia dan informasi pengguna akan diproses dalam file PHP. Jika tidak, pesan kesalahan validasi Captcha akan ditampilkan ke pengguna. Kode untuk memvalidasi captcha adalah,

<?php
session_start();
$conn = mysql_connect("localhost","root","");
mysql_select_db("phppot_examples",$conn);
if(count($_POST)>0) {
if($_POST["captcha_code"]==$_SESSION["captcha_code"]){
$message = "Your message received successfully";
mysql_query("INSERT INTO tblcontact (user_name, user_email,subject,content) VALUES ('" . $_POST['userName']. "', '" . $_POST['userEmail']. "','" . $_POST['subject']. "','" . $_POST['content']. "')");
}
else{
$message = "Enter Correct Captcha Code";
}
}
?>
Demo

Get real time updates directly on you device, subscribe now.

Leave A Reply

Your email address will not be published.