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

PHP 入門教學:從零建立第一個圖形驗證碼

     編輯:PHP 相關知識

前言

圖形驗證碼是 Web 開發中最基礎也最實用的安全機制之一。本教學專為 PHP 初學者設計,帶領你從建立畫布、分配顏色、繪製文字到輸出圖片,完整實作一個簡單的驗證碼生成器。

核心步驟解析

  1. 建立真彩色畫布:使用 `imagecreatetruecolor()` 建立 300×300 像素的畫布。
  2. 分配顏色:以 `imagecolorallocate()` 定義白色(前景)與深藍色(背景)。
  3. 填充背景:`imagefill()` 將整個畫布填滿背景色。
  4. 繪製字串:`imagestring()` 在座標 (100,120) 以字級 10 寫入「Hello,PHP」。
  5. 輸出圖片:送出 `Content-type: image/png` 標頭,再以 `imagepng()` 輸出二進位資料。
  6. 釋放資源:`imagedestroy()` 釋放記憶體,避免洩漏。

完整範例程式碼

<?php
$height = 300;
$width = 300;

// 建立背景圖
$im = imagecreatetruecolor($width, $height);

// 分配顏色
$white = imagecolorallocate($im, 255, 255, 255);
$blue = imagecolorallocate($im, 0, 0, 64);

// 繪製顏色至圖像中
imagefill($im, 0, 0, $blue);

// 繪製字串:Hello,PHP
imagestring($im, 10, 100, 120, 'Hello,PHP', $white);

// 輸出圖像,定義標頭
header('Content-type: image/png');

// 將圖像發送至瀏覽器
imagepng($im);

// 清除資源
imagedestroy($im);
?>

進階延伸建議

  • 將固定字串改為隨機產生的 4~6 碼英數字元
  • 加入 `imageline()` 或 `imagesetpixel()` 產生干擾線與雜點
  • 使用 `imagettftext()` 搭配 TrueType 字體,實現字元傾斜、大小變化
  • 將驗證碼存入 `$_SESSION` 供表單驗證使用

常見問題 FAQ

Q: 瀏覽器顯示亂碼而非圖片?
A: 確認 `header('Content-type: image/png')` 在任何輸出(含空白、BOM)之前送出,且腳本未輸出多餘文字。
Q: 呼叫 `imagecreatetruecolor()` 報錯?
A: 請檢查 `php.ini` 是否啟用 `extension=gd`(PHP 7.2+ 為 `extension=gd2`),並重啟 Web 伺服器。

總結

透過不到 20 行程式碼,你已掌握 PHP GD 庫建立圖片、繪製文字與輸出的核心流程。這是進階驗證碼、圖表生成、圖片水印等功能的基石,建議動手修改參數觀察效果,紮實 GD 繪圖基本功。

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