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:

  1. session_start(): Bắt đầu một phiên để lưu trữ mã Captcha.
  2. Khối lệnh tạo chuỗi Captcha ngẫu nhiên.
  3. $_SESSION['captcha']: Lưu chuỗi Captcha vào session.
  4. 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.
  5. header('Content-Type: image/png'): Thiết lập tiêu đề HTTP để gửi hình ảnh PNG tới trình duyệt.
  6. imagepng($image): Xuất ảnh.
  7. 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.
Tags: PHP, Captcha


Các Hướng Dẫn Cùng Chủ Đề Đang Xem

Cách chuyển chuỗi Markdown sang HTML bằng PHP

Hướng dẫn cách chuyển đổi chuỗi Markdown sang HTML trong PHP bằng cách sử dụng thư viện `Parsedown`, giúp bạn hiển thị nội dung Markdown một cách hiệu quả trên trang web của mình.
Cách ghi nội dung vào file Excel bằng PHP

Hướng dẫn chi tiết cách ghi nội dung vào file Excel bằng PHP bằng cách sử dụng thư viện PHPExcel hoặc thư viện mới hơn là PhpSpreadsheet.
Hướng dẫn đọc nội dung file Excel bằng PHP

Hướng dẫn chi tiết cách đọc nội dung từ file Excel (.xlsx, .xls) bằng PHP, sử dụng thư viện PHPExcel và các bước cài đặt cũng như triển khai cụ thể.
Phân trang kết quả truy vấn MySQL bằng PHP

Hướng dẫn cách phân trang kết quả truy vấn từ MySQL bằng PHP. Mã PHP này giúp chia nhỏ dữ liệu từ cơ sở dữ liệu MySQL thành các trang riêng biệt để hiển thị hiệu quả hơn.
Tổng hợp tất cả các cách nối chuỗi trong PHP

Hướng dẫn chi tiết về tất cả các cách nối chuỗi trong PHP, bao gồm sử dụng toán tử nối chuỗi, hàm nối chuỗi, và các phương pháp khác.
Cách kiểm tra chuỗi con trong chuỗi lớn bằng PHP

Hướng dẫn cách sử dụng hàm `strpos` trong PHP để kiểm tra sự tồn tại của chuỗi con trong một chuỗi lớn. Đây là phương pháp đơn giản và hiệu quả để xử lý chuỗi trong PHP.
Cách gửi Request POST data JSON bằng PHP

Hướng dẫn cách sử dụng PHP để gửi một yêu cầu POST với dữ liệu JSON bằng cách sử dụng cURL. Bài viết sẽ cung cấp ví dụ mã PHP có thể chạy được, kèm theo giải thích chi tiết.
Kiểm tra chuỗi có phải là chuỗi nhị phân hay không bằng PHP

Hướng dẫn cách kiểm tra chuỗi trong PHP xem chuỗi đó có phải là chuỗi nhị phân hay không (chỉ bao gồm các ký tự `0` và `1`). Bài viết sử dụng các hàm xử lý chuỗi cơ bản trong PHP.
Phòng chống XSS (Cross-site Scripting) bằng PHP

Hướng dẫn cách phòng chống XSS (Cross-site Scripting) trong PHP bằng cách lọc và thoát các đầu vào người dùng, nhằm bảo mật trang web trước các lỗ hổng XSS.
Cách truyền Authentication Header Token khi POST dữ liệu tới API bằng PHP

Hướng dẫn chi tiết cách sử dụng cURL trong PHP để truyền `Authentication Header Token` khi POST dữ liệu tới API. Giải pháp này giúp bảo mật và xác thực các yêu cầu tới API.

Đã thêm vào giỏ hàng