萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

Smarty 模板引擎:配置文件與保留變量使用指南

Smarty 不僅能分配 PHP 變量,還支援直接從配置文件讀取數據,以及在模板中無需分配即可存取 $_GET、$_POST、$_SERVER 等超全域變量。本文詳細說明這兩項實用功能的配置與用法。

一、從配置文件直接獲取數據

1. 適用場景

當某些配置值(如網站標題、主題顏色、分頁大小)不想硬編碼在 PHP 代碼中,或需由非開發人員維護時,可放入配置文件,模板直接讀取。

2. 配置文件格式

建立 config/ 目錄,新建 my.config(或 .ini),內容為 key=value 格式:

title="This is the title of the website."
bgcolor="pink"

3. 模板中載入與使用

{config_load file="my.config"}

    

{#title#}

  • {config_load file="..."}:載入配置文件(路徑相對 $config_dir)。
  • {#key#}:輸出配置值。

二、直接存取保留變量($smarty.*)

Smarty 內建封裝了超全域陣列,模板中可直接通過 $smarty.get、$smarty.post、$smarty.server 等存取,無需在 PHP 中 assign()。

1. 獲取 GET 參數

用戶名:{$smarty.get.username}
密碼:{$smarty.get.password}

對應 URL:?username=admin&password=123

2. 獲取 POST 參數

用戶名:{$smarty.post.username}
密碼:{$smarty.post.password}

3. 獲取 SERVER 變量

服務器名稱:{$smarty.server.SERVER_NAME}
請求方法:{$smarty.server.REQUEST_METHOD}

其他可用保留變量

  • $smarty.cookies - $_COOKIE
  • $smarty.session - $_SESSION(需開啟 session)
  • $smarty.env - $_ENV
  • $smarty.request - $_REQUEST
  • $smarty.now - 當前時間戳(time())
  • $smarty.template - 當前模板文件名
  • $smarty.version - Smarty 版本號

安全提示

雖然方便,但直接在模板輸出用戶輸入(GET/POST)存在 XSS 風險。建議:

  1. 在模板使用 {$smarty.get.var|escape:'html'} 進行轉義。
  2. 或在 PHP 端統一過濾後再分配,避免模板直接訪問敏感數據。

善用配置文件與保留變量,能減少 PHP 控制器的樣板代碼,讓模板更具自主性,但務必注意輸出轉義與權限控制。

copyright © 萬盛學電腦網 all rights reserved