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

PHP 實現彈出消息提示框的兩種方式:JavaScript Alert 與跳轉綁定

     編輯:PHP 相關知識

PHP 作為服務端語言無法直接彈窗,需輸出 JavaScript 代碼由瀏覽器執行。本文介紹兩種常用模式:簡單提示、提示後跳轉,並給出安全封裝函數。

方式一:純提示

function alert(string $msg): void {
    // 過濾單引號防止 XSS
    $msg = addslashes($msg);
    echo "<script>alert('{$msg}');</script>";
}

// 使用
alert('操作成功!');

方式二:提示後跳轉

function alert_redirect(string $msg, string $url): void {
    $msg = addslashes($msg);
    $url = addslashes($url);
    echo "<script>alert('{$msg}'); location.href='{$url}';</script>";
}

// 使用
alert_redirect('登入成功', '/dashboard.php');

進階封裝:統一彈窗類

class Msg {
    public static function show(string $msg, string $type = 'info', ?string $redirect = null): void {
        // 類型映射圖標/顏色(需前端配合)
        $icons = ['success' => '✅', 'error' => '❌', 'warning' => '⚠️', 'info' => 'ℹ️'];
        $icon = $icons[$type] ?? $icons['info'];

        $msg = htmlspecialchars($msg, ENT_QUOTES, 'UTF-8');
        $js = "alert('{$icon} {$msg}');";
        if ($redirect) {
            $redirect = htmlspecialchars($redirect, ENT_QUOTES, 'UTF-8');
            $js .= "location.href='{$redirect}';";
        }
        echo "<script>{$js}</script>";
    }

    // AJAX 回調專用:返回 JSON
    public static function json(string $msg, bool $success = true, ?string $redirect = null): void {
        header('Content-Type: application/json');
        echo json_encode([
            'success' => $success,
            'message' => $msg,
            'redirect' => $redirect
        ]);
        exit;
    }
}

// 使用
Msg::show('保存成功', 'success', '/list.php');
Msg::json('權限不足', false);

前端最佳實踐:替換原生 alert

原生 alert() 阻塞頁面、樣式不可控、移動端體驗差。建議:

  1. 引入 SweetAlert2 或 Vex;
  2. PHP 輸出數據屬性或全局變量;
  3. 前端統一攔截渲染美觀彈窗。
<!-- 佈局頁引入 -->
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script>
window.showMsg = (msg, type='info', redirect=null) => {
    Swal.fire({icon: type, title: msg, timer: 2000, showConfirmButton: false})
        .then(() => { if (redirect) location.href = redirect; });
};
</script>

<!-- PHP 輸出 -->
<script>showMsg('操作成功', 'success', '/list.php');</script>

安全提醒

  • 所有輸出到 JS 字串的變量必須經過 addslashes() 或 json_encode() 轉義;
  • 不要直接拼接 $_GET['msg'],防止 XSS;
  • 生產環境禁用 display_errors,避免錯誤信息洩露被注入彈窗。

雖然 alert() 簡單粗暴,但現代 Web 應用建議採用非阻塞、可定制的前端彈窗組件。

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