在 PHP 程式中快速輸出常見 JavaScript 片段(彈窗、導頁、重整、關閉視窗、表單送出等),減少重複撰寫 <script> 標籤與字串拼接。
<?php
/**
* JS 工具類別
* 封裝常用 JavaScript 片段供 PHP 呼叫
*/
class JS {
// 禁止直接存取
public function __construct() {
if (basename($_SERVER['PHP_SELF']) === 'JS.class.php') {
header('HTTP/1.0 404 Not Found');
exit;
}
}
/** 輸出 JS 代碼並結束腳本 */
private static function _write(string $js, bool $exit = true): void {
echo "<script>\n$js\n</script>";
if ($exit) exit;
}
/** 關閉資料庫連線(舊版相容) */
private static function _freeResource(): void {
global $conn;
if (is_resource($conn ?? null)) {
@mysqli_close($conn); // 建議改用 PDO
}
}
/** 返回上一頁 */
public static function back(int $step = -1): void {
self::_write("history.go($step);");
}
/** 彈出警告訊息 */
public static function alert(string $msg): void {
$msg = addslashes($msg);
self::_write("alert('$msg');", false);
}
/** 重新整理目前頁面 */
public static function reload(): void {
self::_freeResource();
self::_write("location.reload();");
}
/** 重新整理開啟者視窗 */
public static function reloadOpener(): void {
self::_write("if (opener) opener.location.reload();", false);
}
/** 跳轉至指定網址 */
public static function goto(string $url): void {
self::_freeResource();
$url = addslashes($url);
self::_write("location.href = '$url';");
}
/** 關閉目前視窗 */
public static function close(): void {
self::_freeResource();
self::_write("window.close();");
}
/** 提交表單 */
public static function submit(string $formName): void {
self::_write("document.$formName.submit();", false);
}
}
?>
require_once 'JS.class.php';
// 登入成功跳轉
JS::goto('/member/index.php');
// 驗證失敗彈窗並回上頁
JS::alert('帳號或密碼錯誤');
JS::back();
// AJAX 回應:關閉彈窗並重整父頁
JS::reloadOpener();
JS::close();
data-* 屬性讓前端統一處理mysql_* 相容代碼,全面遷移至 PDO此類別適合早期 PHP 專案快速維護,新專案建議採用前後端分離架構,由前端負責互動邏輯。