在開發過程中,經常需要在後端驗證失敗或業務邏輯異常時,直接輸出 JavaScript 彈窗提示使用者,並根據情況導向上一頁或指定頁面。將此邏輯封裝為可復用函數,能大幅減少重複代碼,提升維護效率。
<?php
/**
* 輸出 JavaScript 警告框並跳轉
*
* @param string $message 提示訊息
* @param string $url 跳轉目標網址,空值則返回上一頁
* @param bool $isAlert 是否顯示 alert 彈窗
* @param string $title 頁面標題
* @return void
*/
function alert($message, $url = '', $isAlert = true, $title = '提示') {
// 設定編碼與標題
echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>' . $title . '</title></head><body>';
echo '<script type="text/javascript">';
// 可選彈窗
if ($isAlert) {
echo 'alert("' . addslashes($message) . '");';
}
// 跳轉邏輯
if ($url === '') {
echo 'history.back();';
} else {
echo 'location.href="' . $url . '";';
}
echo '</script></body></html>';
exit();
}
?>
<?php
// 範例 1:驗證失敗,彈窗並返回上一頁
if (empty($_POST['username'])) {
alert('帳號不可為空');
}
// 範例 2:登入成功,彈窗並導向會員中心
if ($loginSuccess) {
alert('歡迎回來!', '/member/dashboard');
}
// 範例 3:僅跳轉不彈窗(如權限不足直接導向登入頁)
if (!$hasPermission) {
alert('權限不足', '/login', false);
}
?>
addslashes() 或 json_encode() 轉義,防止惡意腳本注入。$type 參數支援 confirm()、prompt() 或整合 SweetAlert2 等美化彈窗庫。這個 alert() 函數雖然簡單,但在傳統 PHP 專案或快速原型開發中極具實用性。隨著專案演進,建議逐步遷移至前端統一處理提示與導向邏輯,打造更優雅的使用者體驗。