驗證碼(CAPTCHA)是一種廣泛用於驗證用戶身份的技術,通常通過要求用戶識別圖像中的字符或圖像來避免機器人自動化操作。本文將詳細介紹如何通過PHP實現生成驗證碼圖片,並在網頁上展示。
首先,我們需要創建一個PHP文件,命名為captcha.php,並確保文件擴展名為.php。
在PHP腳本中,我們需要定義一些變量來設置驗證碼圖片的尺寸、字符個數及可能的字符集。以下是代碼示例:
$width = 120; // 驗證碼圖片的寬度
$height = 40; // 驗證碼圖片的高度
$characters = 4; // 驗證碼字符個數
$possibleChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
接下來,我們將創建一個空白的圖像,並設置一些基本屬性,如背景色、文字色和字體。代碼如下:
$image = imagecreatetruecolor($width, $height);
$backgroundColor = imagecolorallocate($image, 255, 255, 255); // 背景色:白色
$textColor = imagecolorallocate($image, 0, 0, 0); // 文字顏色:黑色
imagefill($image, 0, 0, $backgroundColor);
$font = 'path/to/your/font.ttf'; // 字體文件路徑
現在,我們需要隨機生成驗證碼字符並將其繪製到圖像上。 PHP提供了隨機數生成的功能,我們可以利用它從字符數組中選擇字符。以下是示例代碼:
$captcha = '';
for ($i = 0; $i < $characters; $i++) {
$randomChar = $possibleChars[rand(0, strlen($possibleChars) - 1)];
$captcha .= $randomChar;
$x = ($width / $characters) * $i + 10; // 字符位置
$y = $height / 2 + 15; // 文字居中偏移
imagettftext($image, 20, 0, $x, $y, $textColor, $font, $randomChar);
}
為了後續驗證,我們需要將生成的驗證碼存儲到PHP的session中,以下是代碼:
session_start();
$_SESSION['captcha'] = $captcha;
最後,我們需要設置圖片輸出頭部信息,並將驗證碼圖像展示給用戶。
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
通過以上步驟,我們成功實現了一個簡單的驗證碼系統。每次刷新頁面時,用戶都會看到一個新的驗證碼圖像,增強了防止自動化攻擊的能力。在實際應用中,您可以將用戶輸入的驗證碼與會話中的存儲進行比對,從而驗證用戶身份。
這是一個基礎的PHP驗證碼實現示例,您可以根據需求對其進行進一步擴展和優化。