Tạo captcha xác minh kí tự nhập vào (Number Verification) bằng PHP

26/07/2012

Ở bài trước mình đã giới thiệu tới các bạn bài viết Thủ thuật PHP : Ứng dụng free php captcha , hôm nay mình sẽ chia sẻ cho các bạn thêm 1 thủ thuật tạo ứng dụng captcha cho trang web của bạn nữa, ứng dụng này có chức năng tạo ra 1 loạt kí tự ngẫu nhiên và tạo ra 1 file hình ảnh cho các kí tự đó. Ứng dụng này rất thích hợp để chặn các spam.

Tạo captcha xác minh kí tự nhập vào
Các bạn lần lượt tạo ra 2 file sau : pic.phpnumverif.php, sau đó chèn các đoạn code sau vào lần lượt file như sau:

numverify.php

<html>
<body>
<?
define ('CHAR_COUNT', 8);
$num_ent=isset($_REQUEST['num_ent']) ? $_REQUEST['num_ent'] : 'none';
if ($num_ent=='none') {
$nums = array("5","6","7","8","d","e","1","2","3","4","f","g","h","j","k","9","a","b","c","m","n","p","q",
"x","y","z","A","B","C","D","r","s","t","u","v","w","E","F","G","N","P","Q","R","S","H","J","K","L","M",
"T","W","X","Y","Z","U","V");
// tạo mảng các kí tự ngẫu nhiên từ mảng $nums
$random_key = array_rand($nums, CHAR_COUNT);
$random = "";
for ($i=0;$i<CHAR_COUNT;$i++) {
// tiếp tục lấy ra các giá trị ngẫu nhiên
$random = $random . $nums[$random_key[$i]];
}
echo "<img src=pic.php?random=$random>";
echo "<form action=" . $_SERVER['PHP_SELF'] . " method=post>
Vui lòng nhập các kí tự sau . (Có phân biệt chữ hoa và thường) <input type=\"text\" name=\"num_ent\"><br>
<input type=\"hidden\" name=\"random\" value=\"$random\">
<p> </p><input type=\"submit\" value=\"Submit\">";
} else {
if ($num_ent == $_REQUEST['random']) {
// Nếu so sánh trùng khớp thì
echo "Bạn đã nhập đúng !";
} else {   // Nếu không trùng khớp.
echo " Không trùng khớp. Vui lòng nhấn F5 để nhận code mới và nhập lại ";
}
}
?>
</body></html>

và sau đây là pic.php

<?
$random=isset($_REQUEST['random']) ? $_REQUEST['random'] : 'ERROR';

header("Content-type: image/png");
$im = @imagecreate(100, 40) or die("Cannot Initialize new GD image stream");
// 100,40 là kích thước mặc định của file hình được tạo ra
$background_color = imagecolorallocate($im, 225, 225, 225); // màu nền
$text_color = imagecolorallocate($im, 0, 0, 0); // màu chữ

imagestring($im, 5, 10, 10, $random, $text_color);
// "5" là kích thước font chữ
// "10,10" là vị trí của các kí tự trong hình
imagepng($im);
imagedestroy($im);
?>

Ứng dụng đơn giản này rất phù hợp cho những ai mới bước vào lập trình, và là nguồn tham khảo hữu ích, Chúc các bạn thành công !

Chuyên Mục:

Bài viết được đăng bởi webmaster

Nếu các bạn thấy bài viết hữu ích thì giúp mình Like cái nhé !