首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 簡易數字驗證碼實作範例

     編輯:PHP 相關知識

核心代碼(四位數字驗證碼)

<?php
session_start();
header("Content-Type: image/jpeg");

$img = imagecreate(50, 20);
$bg = imagecolorallocate($img, 211, 213, 193);
imagefill($img, 0, 0, $bg);

$code = '';
for ($i=0; $i<4; $i++) {
    $num = rand(0, 9);
    $code .= $num;
    $color = imagecolorallocate($img, rand(0,150), rand(0,150), rand(0,150));
    $x = ($i+1) * 8;
    $y = (rand(0,9) % 2 == 0) ? 4 : 2; // 隨機上下抖動
    imagechar($img, 5, $x, $y, $num, $color);
}

$_SESSION['valid'] = $code; // 存入 Session 供後續驗證
imagejpeg($img);
imagedestroy($img);
?>

前端調用方式

<img src="captcha.php" id="captchaImg" onclick="this.src='captcha.php?'+Math.random()" />
<input type="text" name="captcha_input" />

後端驗證邏輯

<?php
session_start();
if (strtolower($_POST['captcha_input']) == strtolower($_SESSION['valid'])) {
    echo "驗證通過";
} else {
    echo "驗證碼錯誤";
}
?>

優化方向

  • 改用 imagecreatetruecolor 獲得更佳畫質
  • 加入干擾線、雜點、背景噪點
  • 支援字母大小寫混合
  • 使用 Session 時設定過期時間(如 10 分鐘)
  • 考慮使用成熟函式庫(如 gregwar/captcha)

此範例展示最基礎的驗證碼生成邏輯,適合學習 GD 函式庫運作原理;生產環境建議採用更健全的方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved