當前位置: 首頁> 最新文章列表> 【PHP驗證碼實現詳解:生成圖片並進行表單驗證】

【PHP驗證碼實現詳解:生成圖片並進行表單驗證】

M66 2025-06-15

PHP驗證碼實現詳解:生成圖片並進行表單驗證

隨著網絡安全意識的提高,驗證碼被廣泛應用於Web表單中,用於防止惡意操作與自動提交。通過驗證碼,可以有效識別用戶操作是否為真實行為。本文將詳細講解如何使用PHP生成驗證碼,並將其集成到表單中完成驗證。

一、生成驗證碼字符串

驗證碼通常由一組隨機字符組成,以下是通過PHP生成隨機驗證碼並存儲到Session中的示例代碼:

<?php
session_start(); // 啟用 Session

// 定義驗證碼長度
$length = 4;

// 定義可用字符
$str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$code = '';

// 生成隨機驗證碼字符串
for ($i = 0; $i < $length; $i++) {
    $code .= $str[rand(0, strlen($str) - 1)];
}

// 存入Session,轉換為小寫字母形式
$_SESSION['code'] = strtolower($code);
?>

二、生成驗證碼圖片

接下來使用GD庫將驗證碼字符串繪製成圖片:

<?php
// 設置驗證碼圖片尺寸
$width = 120;
$height = 40;

// 創建畫布
$image = imagecreatetruecolor($width, $height);

// 設置背景色
$bgColor = imagecolorallocate($image, 255, 255, 255);
imagefilledrectangle($image, 0, 0, $width, $height, $bgColor);

// 設置文字顏色
$textColor = imagecolorallocate($image, 0, 0, 0);

// 寫入驗證碼字符串到圖片中
imagettftext($image, 20, 0, 10, 30, $textColor, 'font.ttf', $code);

// 輸出圖片到瀏覽器
header('Content-type:image/png');
imagepng($image);

// 釋放資源
imagedestroy($image);
?>

運行上述腳本後,將會生成一張帶有驗證碼字符的PNG圖片。

三、表單中集成驗證碼

在HTML表單中加入驗證碼輸入框,並引用驗證碼圖片:

驗證碼圖片

當用戶提交表單時,需要輸入正確的驗證碼,表單處理腳本將進行驗證。

四、處理表單並驗證驗證碼

在表單處理腳本`handleForm.php` 中,通過Session驗證用戶輸入的驗證碼:

<?php
session_start();

// 獲取用戶輸入的驗證碼並轉換為小寫
$code = strtolower($_POST['code']);
$sessionCode = strtolower($_SESSION['code']);

// 比較驗證碼
if ($code !== $sessionCode) {
    echo '驗證碼輸入錯誤';
    exit;
}

// 繼續處理其他表單數據
// ...
?>

如果驗證碼匹配失敗,系統將提示錯誤信息;匹配成功則繼續執行後續表單處理邏輯。

五、總結

通過以上步驟,我們實現了使用PHP生成驗證碼字符串、創建驗證碼圖片,並將其與表單結合進行驗證的完整流程。這種方式能有效提高網站的交互安全性,防止表單被自動腳本濫用。

在實際項目中,開發者還可以對驗證碼的字符樣式、圖片乾擾元素、字體大小等進行進一步優化,從而提升驗證碼的辨識度與防攻擊能力。