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

PHP 通用跳轉函數與操作提示類:靈活控制重定向延遲、JS/HTML 雙模式

     編輯:PHP 相關知識

Web 開發中頻繁需要「操作成功/失敗 → 提示信息 → 延遲跳轉」的交互模式。本文提供一個參數化的 redirect() 函數與單例模式的 Tips 提示類,覆蓋 HTML Meta、HTTP Header、JavaScript 三種跳轉方式。

萬能跳轉函數:redirect()

/**
 * 瀏覽器重定向綜合函數
 * @param string $url      目標 URL
 * @param int    $delay    延遲秒數 (0 立即)
 * @param bool   $js       是否返回 JS 代碼而非直接執行
 * @param bool   $jsWrapped JS 代碼是否包裝在 ';

    if ($return) return $out;
    echo $out;
    exit;
}

使用場景示例

  • redirect('/list.php'):立即 302 跳轉
  • redirect('/list.php', 3):3 秒後 Meta Refresh
  • redirect('/list.php', 0, true, true, true):獲取 <script>document.location='...'</script> 字符串供 AJAX 返回
  • redirect('/list.php', 2, true, false, true):獲取純 JS 代碼 window.setTimeout(...) 嵌入頁面

操作提示單例類:Tips

class Tips {
    private $tips;
    static private $_instance;

    private function __construct($string, $url) {
        $this->tips = " 
                       {$string} 
                       返回 (4秒後自動跳轉)";
    }

    public function __toString() { return $this->tips; }
    private function __clone() {}

    public static function get_tips($string, $url) {
        if (!(self::$_instance instanceof self)) {
            self::$_instance = new self($string, $url);
        }
        return self::$_instance;
    }
}

使用示例

require_once 'tips_class.php';
$msg = "錯誤:兩次輸入的密碼不一致";
$url = "../login.php";
echo Tips::get_tips($msg, $url); // __toString() 自動輸出

設計亮點

  • 單例模式:同一請求多次調用只創建一個提示對象。
  • __toString() 魔術方法:直接 echo $obj 即可輸出 HTML,極致簡潔。
  • 參數化跳轉:redirect() 覆蓋所有常見跳轉場景,消除項目中散落的跳轉邏輯。
  • Header 已發送檢測:自動降級為 Meta Refresh,避免 Cannot modify header information 警告。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved