以下是一個使用PHP和GD庫生成和處理圖形驗證碼的示例代碼:
<?php
// 創建一個驗證碼圖像
$width = 200;
$height = 50;
$image = imagecreatetruecolor($width, $height);
// 創建白色背景
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);
// 生成隨機驗證碼文本
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$code = '';
for ($i = 0; $i < 6; $i++) {
$code .= $chars[rand(0, strlen($chars) - 1)];
}
// 將驗證碼文本保存到session中
session_start();
$_SESSION['captcha_code'] = $code;
// 將驗證碼文本繪制到圖像中
$text_color = imagecolorallocate($image, 0, 0, 0);
imagettftext($image, 20, 0, 10, 30, $text_color, 'arial.ttf', $code);
// 添加干擾線
for ($i = 0; $i < 10; $i++) {
$line_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $line_color);
}
// 輸出驗證碼圖像
header('Content-type: image/png');
imagepng($image);
// 釋放內存
imagedestroy($image);
?>
您可以將上面的代碼保存為一個PHP文件,然后在需要顯示驗證碼的頁面上引用該文件的URL來顯示驗證碼圖像。當用戶提交表單時,您可以通過比對用戶輸入的驗證碼和session中保存的驗證碼來驗證驗證碼是否正確。
請注意,上面的代碼中使用了imagettftext
函數來繪制驗證碼文本,因此您需要確保服務器上安裝了GD庫和FreeType支持。您還需要提供一個TrueType字體文件(比如arial.ttf
)來用于繪制文本。您可以在網上找到免費的TrueType字體文件來使用。