Tạo mã Captcha bằng PHP
Hướng dẫn cách tạo mã Captcha đơn giản bằng PHP để bảo vệ website khỏi các hành vi spam và bot tự động.
Bài viết này sẽ hướng dẫn bạn cách sử dụng PHP để tạo một hình ảnh Captcha ngẫu nhiên, giúp tăng cường bảo mật cho website bằng cách ngăn chặn các hành vi spam từ bot tự động.
Mã PHP:
<?php
// Bắt đầu session
session_start();
// Tạo chuỗi Captcha ngẫu nhiên
$captcha_code = '';
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$length = 6;
for ($i = 0; $i < $length; $i++) {
$captcha_code .= $characters[rand(0, strlen($characters) - 1)];
}
// Lưu Captcha vào session
$_SESSION['captcha'] = $captcha_code;
// Tạo ảnh Captcha
$width = 150;
$height = 40;
$image = imagecreate($width, $height);
// Màu sắc
$background_color = imagecolorallocate($image, 255, 255, 255); // Trắng
$text_color = imagecolorallocate($image, 0, 0, 0); // Đen
// Tô màu nền
imagefilledrectangle($image, 0, 0, $width, $height, $background_color);
// Thêm chuỗi Captcha vào ảnh
$font_size = 20;
$angle = 0;
$x = 10;
$y = 30;
imagestring($image, $font_size, $x, $y, $captcha_code, $text_color);
// Gửi ảnh tới trình duyệt
header('Content-Type: image/png');
imagepng($image);
// Giải phóng bộ nhớ
imagedestroy($image);
?>
Giải thích chi tiết từng dòng code:
-
session_start()
: Bắt đầu một phiên để lưu trữ mã Captcha. - Khối lệnh tạo chuỗi Captcha ngẫu nhiên.
-
$_SESSION['captcha']
: Lưu chuỗi Captcha vào session. -
imagecreate()
,imagecolorallocate()
,imagefilledrectangle()
,imagestring()
: Các hàm tạo hình ảnh Captcha với nền trắng và chữ màu đen. -
header('Content-Type: image/png')
: Thiết lập tiêu đề HTTP để gửi hình ảnh PNG tới trình duyệt. -
imagepng($image)
: Xuất ảnh. -
imagedestroy($image)
: Giải phóng bộ nhớ.
Yêu cầu hệ thống:
- PHP 7.0 trở lên
- Mở rộng GD của PHP (được bật theo mặc định)
Cách cài đặt các thư viện để chạy được đoạn mã PHP trên:
Đảm bảo đã cài đặt PHP với hỗ trợ GD. Bạn có thể kiểm tra bằng lệnh php -m
trong terminal.
Lời khuyên:
- Để tăng độ khó, hãy thêm đường cong, nhiễu, hoặc thay đổi màu sắc chữ và nền.
- Luôn lưu chuỗi Captcha vào session để có thể kiểm tra nó trên trang xác minh.