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

PHP 封裝常用 JavaScript 操作類別(JS.php)

     編輯:PHP 綜合知識

用途

在 PHP 程式中快速輸出常見 JavaScript 片段(彈窗、導頁、重整、關閉視窗、表單送出等),減少重複撰寫 <script> 標籤與字串拼接。

類別完整代碼(JS.class.php)

<?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();

現代化改良建議

  • 改用 JSON API + 前端框架(Vue/React/Alpine.js)分離關注點
  • 若需保留伺服端渲染,建議輸出 data-* 屬性讓前端統一處理
  • 移除 mysql_* 相容代碼,全面遷移至 PDO
  • 加入 CSP (Content-Security-Policy) 標頭,限制內聯腳本執行

結語

此類別適合早期 PHP 專案快速維護,新專案建議採用前後端分離架構,由前端負責互動邏輯。

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