Tạo CAPTCHA với PHP

Tất cả các trang web cho phép đăng ký thành viên mới, đều cần tới 1 thứ gọi là CAPTCHA

Vậy CAPTCHA là gì? Và việc tạo CAPTCHA với PHP được tiến hành như thế nào?

CAPTCHA là chữ viết tắt của Completely Automated Public Turing test to tell Computers and Humans Apart, dịch nôm na là Phép thử Turing công cộng hoàn toàn tự động để phân biệt máy tính với người.

Mỗi 1 trang đăng ký sẽ tự động tạo ra 1 mã CAPTCHA. Người dùng nếu không phải là máy thì sẽ điền đúng mã CAPTCHA giống hệt với mã CAPTCHA đã được tạo ra.

Và bây giờ mình sẽ hướng dẫn các bạn tạo CAPTCHA với PHP

1) Các bạn hãy tạo 1 project với cấu trúc như hình vẽ bên dưới

pcaptcha

2) Có 3 file mà các bạn cần quan tâm.

Đó là index.php giúp tạo trang hiển thị

Đó là captcha.php giúp tạo ngẫu nhiên 1 mã CAPTCHA với 6 ký tự

Và cuối cùng là submit.php để kiểm tra xem mã CAPTCHA nhập vào có đúng với mã CAPTCHA đã được sinh ra hay không

3 file đó có code như sau:

index.php

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Tạo captcha với PHP</title>
</head>
<body>
<br />
<center>
<form action=”submit.php” method=”POST”>
<table>
<tr>
<td colspan=”2″><b>Bạn vui lòng nhập mã xác nhận vào ô trống bên dưới</b></td>
</tr>
<tr>
<td><input type=”text” name=”capcode” /></td>
</tr>
<tr>
<td width=”100px”><img src=”captcha.php” /></td>
<td align=”left”><input type=”submit” name=”submit” value=”Submit” /></td>
</tr>
</table>
</form>
</center>
</body>
</html>

captcha.php

<?php

/**
* Đây là nơi giúp tạo ra mã captcha
*
* @author Lưu Văn Phong <luuvanphong@outlook.com>
*/

session_start();
$captcha_arr = array(“0″,”1″,”2″,”3″,”4″,”5″,”6″,”7″,”8″,”9”,
“A”,”B”,”C”,”D”,”E”,”F”,”G”,”H”,”I”,”J”,”K”,”L”,”M”,”N”,”O”,”P”,”Q”,”R”,”S”,”T”,”U”,”V”,”W”,”X”,”Y”,”Z”,
“a”,”b”,”c”,”d”,”e”,”f”,”g”,”h”,”i”,”j”,”k”,”l”,”m”,”n”,”o”,”p”,”q”,”r”,”s”,”t”,”u”,”v”,”w”,”x”,”y”,”z”);
$captcha_index = array_rand($captcha_arr,6);
$captcha = $captcha_arr[$captcha_index[0]].$captcha_arr[$captcha_index[1]].$captcha_arr[$captcha_index[2]].
$captcha_arr[$captcha_index[3]].$captcha_arr[$captcha_index[4]].$captcha_arr[$captcha_index[5]];

$_SESSION[“captcha”] = $captcha;
$image = imagecreatefromjpeg(“images/phpgo_captcha.jpg”);
$color = imagecolorallocate($image,0,100,0);
imagestring($image, 100, 46, 18, $captcha, $color);
header(“Content-type:image/jpeg”);
imagejpeg($image);
?>

submit.php

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>
<title>Tạo captcha với PHP</title>
</head>
<body>
<?php

/**
* Đây là nơi kiểm tra xem mã nhập vào có giống với mã captcha mà chương trình đã tạo ra hay không
*
* @author Lưu Văn Phong <luuvanphong@outlook.com>
*/
session_start();
if ($_POST[‘capcode’] != $_SESSION[‘captcha’] or $_SESSION[‘captcha’] == ”)
{
echo “Mã nhập vào sai tè le rùi bạn! Vui lòng nhập lại”;
}
else {
echo “Đúng rùi! Bạn chắc chắn không phải là máy!”;
}
?>
</body>
</html>

Đó là tất cả những gì mà các bạn cần để tạo CAPTCHA với PHP

Các bạn có thể tải về toàn bộ source code tại đây!

Chúc các bạn thành công!

3 thoughts on “Tạo CAPTCHA với PHP

  1. Bạn cho mình hỏi sao về chạy nhập nó toàn báo sai ? mình sợ là ghi nhầm đổi lại chuỗi captcha từ 1-9 mà ghi nó báo vẫn sai

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s