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

ThinkPHP 學習筆記:分頁與驗證碼實作全解析

     編輯:PHP 相關知識

前言

在 ThinkPHP 開發中,分頁與驗證碼是兩項基礎且高頻使用的功能。本文將透過實際程式碼範例,詳細說明如何建立通用的驗證碼驗證機制,以及如何運用內建的 Page 類別實現靈活的分頁顯示。

一、建立通用驗證碼驗證基類

為了讓多個 Controller 共用驗證碼邏輯,我們可以建立一個 CommonAction 基類,讓其他 Action 繼承它。核心在於 verify() 方法:

<?php
class CommonAction extends Action {
    public function verify() {
        // 匯入驗證碼類別
        import('ORG.Util.Image');
        
        // 產生驗證碼圖片
        // 參數:長度、模式(5=混合)、格式、寬、高
        Image::buildImageVerify(5, 5, 'png', 80, 22);
        
        /* 中文驗證碼擴充 (ThinkPHP 2.0 需修正 msubstr 函數並放入字體檔)
        Image::GBVerify();
        */
    }
}
?>

關鍵參數說明:

  • $length:驗證碼位數
  • $mode:類型 (0:字母, 1:數字, 2:大寫, 3:小寫, 4:中文, 5:混合)
  • $type:圖片格式
  • $width/$height:圖片尺寸

二、分頁功能實作

繼承 CommonAction 的 PageAction 展示如何使用 ORG.Util.Page 類別:

<?php
class PageAction extends CommonAction {
    public function index() {
        import('ORG.Util.Page');
        $user = M('User');
        $count = $user->count(); // 總筆數
        
        // 實例化分頁類別:每頁 3 筆
        $page = new Page($count, 3);
        
        // 自訂分頁文字
        $page->setConfig('header', '筆會員');
        $page->setConfig('prev', '上一組');
        $page->setConfig('next', '下一組');
        $page->setConfig('first', '首頁');
        $page->setConfig('last', '尾頁');
        
        // 取得分頁顯示字串
        $show = $page->show();
        
        // 依分頁參數查詢資料
        $list = $user->order('id desc')
                     ->limit($page->firstRow . ',' . $page->listRows)
                     ->select();
        
        // 指派給模板
        $this->assign('title', '分頁演示');
        $this->assign('alist', $list);
        $this->assign('page', $show);
        $this->display();
    }

    // 驗證碼檢查
    function check() {
        $verify = $_SESSION['verify'];
        if ($verify != md5($_POST['verify'])) {
            $this->error('驗證碼錯誤');
        }
    }
}
?>

三、前端模板與互動

模板檔案結合表單提交、驗證碼點擊更換、分頁列表輸出:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>ThinkPHP 分頁與驗證碼演示</title>
</head>
<body>
    <form action="__URL__/check" method="post">
        驗證碼:<input type="text" name="verify"/>
        <img onclick="show(this)" src="__APP__/common/verify"/><br/>
        <input type="submit" value="提交"/>
    </form>

    <!-- 列表輸出 -->
    <volist name="alist" id="vo">
        <li>
            <span>ID</span>{$vo.id}
            <span>用戶名</span>{$vo.username}
            <span>IP</span>{$vo.createip}
        </li>
    </volist>

    <!-- 分頁顯示 -->
    {$page}

    <script>
        function show(obj) {
            obj.src = "__APP__/common/verify?" + Math.random();
        }
    </script>
</body>
</html>

四、重點總結

  1. 基類複用:將驗證碼邏輯封裝在 CommonAction,子類別自動擁有 verify() 功能。
  2. 分頁核心三步驟:統計總數 → 實例化 Page → 使用 firstRow/listRows 進行 limit 查詢。
  3. 前端體驗:驗證碼圖片綁定 onclick 事件,附加隨機參數防止快取,使用者點擊即可換碼。
  4. 驗證邏輯:Session 儲存的驗證碼為 MD5 加密後的值,驗證時需對使用者輸入同樣加密後比對。

掌握這兩項技巧,即可快速構建具備良好使用者體驗的後台管理或前台列表頁面。

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