在 PHP 中實現驗證碼判斷通常需要以下步驟:
生成驗證碼:可以使用 PHP 的 GD 庫或者其他庫來生成驗證碼圖片,包括隨機生成驗證碼字符串、設置字體顏色、背景顏色、干擾線等效果。
將驗證碼字符串保存到 session 中:在生成驗證碼圖片的同時,將驗證碼字符串保存到 session 中。
用戶輸入驗證碼:在用戶提交表單時,要求用戶輸入驗證碼。
驗證用戶輸入的驗證碼:獲取用戶輸入的驗證碼字符串,與 session 中保存的驗證碼字符串進行比對,判斷是否一致。
以下是一個簡單的驗證碼實現示例:
<?php
session_start();
// 生成驗證碼
$code = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 5);
$_SESSION['captcha'] = $code;
// 創建一個 100x30 的驗證碼圖片
$image = imagecreatetruecolor(100, 30);
// 設置背景顏色
$bg_color = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bg_color);
// 設置驗證碼字符串的顏色
$text_color = imagecolorallocate($image, 0, 0, 0);
// 在圖片上寫入驗證碼字符串
imagestring($image, 5, 10, 5, $code, $text_color);
// 輸出驗證碼圖片
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
<form method="post" action="verify.php">
<input type="text" name="captcha">
<img src="captcha.php" alt="captcha">
<input type="submit" value="Submit">
</form>
在 verify.php 中驗證用戶輸入的驗證碼:
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$captcha = $_POST['captcha'];
if (isset($_SESSION['captcha']) && $_SESSION['captcha'] == $captcha) {
echo '驗證碼正確';
} else {
echo '驗證碼錯誤';
}
}
?>
在這個示例中,我們通過 session 保存驗證碼字符串,用戶輸入驗證碼后與 session 中保存的驗證碼字符串進行比對,從而實現驗證碼的判斷。