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

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.

captcha, hoc php, lập trình php, Number Verification, php code, thu thuat php


Các bạn lần lượt tạo ra 2 file sau : pic.php và numverif.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 !

 

 HỖ TRỢ TRỰC TUYẾN