红穆笔记
首頁 語言筆記 PHP圖片驗證碼如何實現?
語言筆記 PHP

PHP圖片驗證碼如何實現?

PHP图片验证码如何实现?

使用 PHP 類來生成驗證碼的示例:

class Captcha
{
    protected $width = 100; // 驗證碼寬度
    protected $height = 30; // 驗證碼高度
    protected $length = 4; // 驗證碼長度
    protected $font_size = 16; // 驗證碼字體大小

    public function generate()
    {
        session_start(); // 啓動會話

        // 創建圖像對象
        $image = imagecreatetruecolor($this->width, $this->height);

        // 設定背景色
        $bg_color = imagecolorallocate($image, 255, 255, 255);
        imagefill($image, 0, 0, $bg_color);

        // 生成驗證碼字符串
        $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        $str = '';
        for ($i = 0; $i < $this->length; $i++) {
            $str .= $chars[mt_rand(0, strlen($chars) - 1)];
        }

        // 把驗證碼字符串存入會話變量
        $_SESSION['captcha'] = $str;

        // 繪製驗證碼字符串
        $text_color = imagecolorallocate($image, 0, 0, 0);
        for ($i = 0; $i < $this->length; $i++) {
            $x = ($this->width / $this->length) * $i + ($this->width / $this->length - $this->font_size) / 2;
            $y = $this->height / 2 + $this->font_size / 2 - 2;
            imagettftext($image, $this->font_size, mt_rand(-10, 10), $x, $y, $text_color, __DIR__ . '/arial.ttf', $str[$i]);
        }

        // 輸出圖像
        header('Content-type: image/png');
        imagepng($image);

        // 釋放資源
        imagedestroy($image);
    }

    public function validate($value)
    {
        session_start(); // 啓動會話

        if (isset($_SESSION['captcha']) && strtolower($_SESSION['captcha']) === strtolower($value)) {
            unset($_SESSION['captcha']);
            return true;
        } else {
            return false;
        }
    }
}

使用示例:

客戶端代碼:

<!-- 在 HTML 頁面中引用驗證碼圖片 -->
<img src="captcha.php" alt="驗證碼">
<!-- 提交表單時發送驗證碼字符串 -->
<input type="text" name="captcha">

服務器端代碼:

<?php
// 創建驗證碼對象
$captcha = new Captcha();

// 生成驗證碼
$captcha->generate();

// 驗證提交的驗證碼
if ($captcha->validate($_POST['captcha'])) {
    echo '驗證通過';
} else {
    echo '驗證失敗';
}

PS:此代碼僅爲示例,封裝可以更加完善,不建議直接用於生產環境。

微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

PHP ob函数记录

PHP ob函數記錄 語言筆記 PHP

下面3個函數的用法 ob_get_contents(); ob_end_clean(); ob_start(); 可以藉助這幾個函數實現緩衝本地文件,以及執行本地腳本代碼。 使用ob_start()把輸出的代碼存到緩衝區,頁面不會顯示出來; 然後用ob_get_contents得到緩衝區的數據。 o…
👁 143
PHP preg

PHP preg 語言筆記 PHP

preg_match_all 函數用於執行一個全局正則表達式匹配。preg_match_all() 語法int preg_match_all ( string $pattern , string $subject [, array &amp;$matches [, int $flags = PREG…
👁 169
PHP 三元运算符与if的详解

PHP 三元運算符與if的詳解 語言筆記 PHP

三元運算符語條件 ? 結果1 : 結果2 說明:問號前面的位置是判斷的條件,如果滿足條件時結果1,不滿足時結果2。本文對三元運算符和if...else...進行對比詳解,希望對大家有所幫助。今天在改論文在線的時候遇到了一個語句看不懂:$if_summary = $row['IF_SUMMARY']=…
👁 191
PHP强制转换类型

PHP強制轉換類型 語言筆記 PHP PHP採集 PHP與mysql

獲取數據類型1.如果想查看某個表達式的值和類型,用var_dump()。 2.如果只是想得到一個易讀懂的類型的表達方式用於調試,用 gettype()。3.要查看某個類型,不要用 gettype(),而用is_type() 函數。字符串轉換爲數值當一個字符串被當作數字來求值時,根據以下規則來決定結果…
👁 232
php 字符串中是否包含指定字符串的多种方法

php 字符串中是否包含指定字符串的多種方法 語言筆記 PHP

strstrstrstr() 函數搜索一個字符串在另一個字符串中的第一次出現。該函數返回字符串的其餘部分(從匹配點)。如果未找到所搜索的字符串,則返回 false。代碼如下:&lt;?php $email = 'user@example.com'; $domain = strstr($email, …
👁 138

推薦閱讀

(自适应手机版)幽默笑话网站pbootcms模板 搞笑趣图类网站源码下载 0476

(自適應手機版)幽默笑話網站pbootcms模板 搞笑趣圖類網站源碼下載 0476 實用收藏 pbootcms模板

一款自適應移動端的機械製造與藍色工業機械設備PbootCMS網站模板。設計風格專業工業,適合各類機械設備製造企業展示產品系列。有助於機械公司在線上搭建品牌形象站,吸引工業客戶。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5.cn相關文…
👁 56
地暖采暖设备网站模板 0064

地暖採暖設備網站模板 0064 實用收藏 易優模板

此套eyoucms模板適用於地暖採暖設備行業,設計風格專業舒適,能夠展示地暖產品、採暖系統及工程案例。有助於暖通設備企業在線上展示產品,吸引家庭與工程客戶。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CMS(EyouC…
👁 50
英语教育培训机构网站模板 0857

英語教育培訓機構網站模板 0857 實用收藏 易優模板

此套eyoucms模板適用於英語教育培訓機構,設計風格國際教育,能夠展示英語培訓課程、師資力量、教學成果及留學服務。有助於英語培訓機構在線上吸引學生,提升品牌知名度。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CMS(…
👁 40
(自适应手机版)响应式供应链网站pbootcms模板 进出口服务企业网站源码 0477

(自適應手機版)響應式供應鏈網站pbootcms模板 進出口服務企業網站源碼 0477 實用收藏 pbootcms模板

本套自適應移動端的棕色傢俱裝修與建材類PbootCMS響應式網站模板。設計風格溫暖木質,適合展示傢俱產品、裝修案例及建材貿易。有助於傢俱建材企業在線上展示品牌,吸引裝修公司與消費者。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5.cn…
👁 46
响应式装修建材地板类网站模板 0065

響應式裝修建材地板類網站模板 0065 實用收藏 易優模板

一款針對裝修建材地板類企業的eyoucms響應式網站模板。設計風格時尚現代,能夠展示地板產品、鋪裝效果及空間應用。有助於地板品牌在線上提升形象,吸引裝修公司與消費者。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CMS(…
👁 61
响应式婴幼儿早教启蒙网站模板 0858

響應式嬰幼兒早教啓蒙網站模板 0858 實用收藏 易優模板

一款針對嬰幼兒早教啓蒙行業的eyoucms響應式網站模板。設計風格活潑童趣,能夠展示早教啓蒙課程、教學環境、師資力量及教育理念。有助於早教機構在線上吸引家長,提升品牌知名度。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優…
👁 40