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

PHP 頁面跳轉函數封裝:延遲跳轉、提示信息與模板化輸出

     編輯:PHP 綜合知識

封裝通用的 redirect() 函數,實現延遲跳轉、友好提示、自定義模板,提升用戶體驗並統一項目風格。

函數完整實現

<?php
/**
 * 頁面跳轉函數
 * @param int|string $ms  延遲秒數
 * @param string     $url 目標 URL
 * @param string     $text 提示信息
 */
function redirect($ms = 3, $url = '', $text = '') {
    // 設置默認值
    $ms = (int)$ms > 0 ? (int)$ms : 3;
    $url = $url ?: '/';
    $text = $text ?: '頁面正在跳轉,請稍候...';
    
    // 輸出 HTML 模板
    echo <<<EOT
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="refresh" content="{$ms};URL={$url}">
    <meta charset="utf-8">
    <title>頁面跳轉提示</title>
    <style>
        body {font-family: Microsoft YaHei, sans-serif; text-align: center; padding: 50px;}
        .msg-box {max-width: 500px; margin: 0 auto; padding: 20px; border: 1px solid #ddd; border-radius: 4px;}
        .btn {display: inline-block; margin-top: 15px; padding: 8px 20px; background: #007bff; color: #fff; text-decoration: none; border-radius: 3px;}
    </style>
</head>
<body>
    <div class="msg-box">
        <h3>頁面操作提示</h3>
        <p>{$text}</p>
        <p><a href="{$url}" class="btn">{$ms} 秒後自動跳轉,點此立即前往</a></p>
    </div>
</body>
</html>
EOT;
    exit;  // 關鍵:阻止後續代碼執行
}

使用示例

// 基本用法
redirect(2, 'adduser.php', '增加用戶成功!稍後返回列表頁...');

// 成功提示跳轉
redirect(3, '/admin/users', '數據保存成功!');

// 錯誤提示返回
redirect(5, 'javascript:history.back()', '權限不足,即將返回上一頁...');

進階版:支持 AJAX 請求

function redirect($ms = 3, $url = '', $text = '', $ajax = false) {
    if ($ajax || (isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
        && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest')) {
        // AJAX 請求返回 JSON
        header('Content-Type: application/json');
        echo json_encode([
            'code' => 200,
            'msg' => $text,
            'url' => $url,
            'wait' => $ms
        ]);
        exit;
    }
    // ... 普通 HTML 跳轉邏輯
}

核心要點總結

  • meta refresh:瀏覽器原生支持,無需 JavaScript
  • exit():必須終止腳本,防止敏感代碼繼續執行
  • 模板分離:大型項目建議使用模板引擎渲染跳轉頁
  • 安全性:$url 應過濾驗證,防止開放重定向漏洞

替代方案:現代框架通常使用 header('Location: ...') 立即跳轉(302),配合 Session Flash 數據傳遞提示信息,體驗更流暢。

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