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