Trong bài này , các chị tiếp kiến tìm hiểu phương pháp tạo dãy số không hẹn mà có để chống tấn công flood dữ liệu. Hoặc ai đó cố ý spam khiến cơ sở dữ liệu của chúng ta chẳng thể xử lý tiếp được.
trước nhất , bạn tiến hành tạo form HTML đơn giản để thực thi thao tác nhập liệu trong lập trình PHP
các chị để ý phần hình ảnh , tại đây tôi truyền đường dẫn chính là kết liên tới trang random_image.php. Trang này phải thực thi nghề nghiệp tạo ra những bức hình có dãy số không hẹn mà có để phần nhập liệu của người sử dụng tham chiếu tới.
Tiếp theo , anh khởi tạo file random_image.php để lấy ra dãy số ngẫu nhiên và phát sinh chúng ngay trên tấm hình cho người thâm nhập nhập liệu.
Để làm được điều đó. Chúng ta nên khởi tạo session và lưu dãy số nhập liệu đó vào session của mình , sau đó so khớp với trang form bên kia.
Việc trước tiên các anh làm việc hàm md5 và ran để mã hóa các ký tự bao gồm số và chữ cái. Khi làm việc hàm md5( ) ký tự nảy sinh nên lên tới 32 ký tự. Và anh chỉ lấy độc nhất 5 ký tự từ chuỗi mã hóa đó bằng hàm substr. Tiếp tục ta lưu đoạn mã hóa này trong session cụ thể $_SESSION['security_code'] , để tại trang form ta nên sử dụng so sánh với phần nhập liệu của người dùng.
Xem thêm : cú pháp trong PHP
Vậy phải đoạn code dưới cần giải quyết các tình huống này.
$md5_hash = md5( rand( 0 , 999 ) );
$security_code = substr( $md5_hash , 15 , 5 );
$_SESSION["security_code"] = $security_code;
?>
Kế đến ta khởi tạo tấm hình với chiều rộng và chiều cao mà ta thiết lập phê chuẩn hàm ImageCreate( ). Và tiếp chuyện khai báo 2 màu chính là trắng và đen bằng hàm ImageColorAllocate( $image , red , green , blue ). Hàm này phải tạo ra một màu sắc từ hệ màu RGB trên tấm hình mà anh vừa khởi tạo.
tiếp kiến ta đổ background của tấm hình cần là màu đen và chữ hiện ra trên tấm hình phải là màu trắng bằng hàm ImageFill( ) và hàm ImageString( ). Hàm ImageString có một số đối số căn bản như sau: ImageString( $image , 5 , 30 , 6 , $security_code , $white ); Trong đó:
+ $image là hình mà chúng ta khởi tạo.
+ 5: là font-size mà bạn quy ước cho ký tự Lộ rõ ra trên hình.
+ 30: là khoảng cách bên trái của tấm hình.
+ 6 : là khoảng cách từ trên của tấm hình.
+ $security_code: là đoạn code sau khi chúng ta cắt ra ở trên.
+ $white: là màu sắc mà anh đã làm việc hàm ImageColorAllocate( ) ở trên để khởi tạo ra màu trắng.
ế tới anh cần sử dụng lệnh header để trả nội dung này phản hồi dữ liệu hình dạng. Và tiến hành khởi tạo format cho file hình mà các chị vừa tạo là JPG đồng thời giải phóng hình tạm được làm việc để khợi tạo ra tấm hình này bằng đoạn code sau:
header( "Content-Type: image/jpeg" );
ImageJpeg( $image );
ImageDestroy( $image );
?>
Để dễ quản lý chúng ta cần đặt tất cả đoạn code trên vào trong 1 hàm để dễ sử dụng và quản lý chúng chuyên nghiệp hơn. Vậy tuốt đoạn code trong trang random_image.php
tiếp học lập trình PHP , trong trang form anh cần khởi tạo session để chúng nhận được các giá trị mà ta đã khởi tạo và làm việc ở trang random_image , kế tới ta kiểm tra xem người làm việc có nhấn submit chưa. Nếu có ta cần phải nối tiếp thẩm tra xem người dùng nhập vào textbox có đúng là dãy số hiển thị trên hình ảnh hay không. Và xuất ra báo cáo ứng với với nội dung của người nhập liệu
Qua Các ví dụ này , mọi người đã hiệu được nguyên tắc xử lý và những hàm cơ bản mà 1 hệ thống khi sử dụng captcha cần vận dụng như thế nào. Và tất nhiên hàm xử lí captcha này cũng chỉ mang cấu trúc tự do tương đối. Để tăng cường tính bảo mật hơn , các chị phải làm việc 1 số hàm chuyên dụng nhằm mã hóa hoặc gây nội dung khó nhìn hơn để chặn các tools hoặc các hệ thống bot có khả năng qua mặt thông số này.