萬盛學電腦網

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

PHP 動態生成 WAP/WML 頁面完整指南:MIME 設定、輸出規範與實例

WAP 架構簡介

WAP (Wireless Application Protocol) 透過 WAP Gateway 將行動裝置請求轉為 HTTP 送達 Web Server,Server 端腳本 (PHP) 動態產出 WML (Wireless Markup Language) 回應。WML 基於 XML,**語法嚴格、必須 Well-formed**,任何標籤未閉合即導致渲染失敗。

一、Web Server MIME 類型設定

Apache httpd.conf 或 .htaccess 加入:

AddType text/vnd.wap.wml .wml
AddType image/vnd.wap.wbmp .wbmp
AddType application/vnd.wap.wmlc .wmlc
AddType text/vnd.wap.wmlscript .wmls
AddType application/vnd.wap.wmlscriptc .wmlsc

Nginx mime.types 同理加入對應副檔名對應。

二、PHP 輸出 WML 關鍵點

  1. Header 必須最先輸出:header('Content-Type: text/vnd.wap.wml; charset=utf-8');
  2. XML 聲明與 DTD:WML 文件須包含 <?xml version="1.0" encoding="UTF-8"?> 及 <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "https://www.wapforum.org/DTD/wml_1.1.xml">。
  3. 結構:<wml> 根元素包含一或多張 <card> (畫面單元)。

三、最簡單動態 WML 範例

<?php
header('Content-Type: text/vnd.wap.wml; charset=utf-8');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "https://www.wapforum.org/DTD/wml_1.1.xml">';
?>
<wml>
  <card id="main" title="PHP WAP Demo">
    <p>
      當前時間:<?php echo date('Y-m-d H:i:s'); ?><br/>
      <a href="menu.wml">進入主選單</a>
    </p>
  </card>
</wml>

四、WML 關鍵標籤速查

標籤用途範例
<card>單一畫面卡片<card id="c1" title="標題">...</card>
<p>段落 (卡片內容容器)<p align="center">文字</p>
<a href="">超連結 (卡片間跳轉或外部 URL)<a href="#c2">下一頁</a>
<do>軟鍵綁定動作<do type="accept" label="確定"><go href="#next"/></do>
<input>文字輸入框<input name="q" type="text" />
<select>選單<select><option value="1">項目</option></select>
<img src="" alt="">WBMP 圖片 (僅支援 1-bit 黑白)<img src="logo.wbmp" alt="Logo"/>

五、限制與注意事項

  • 卡片大小限制:早期 WAP Gateway 限制單卡片 1.5KB~3KB,超過需拆分多卡片或啟用 WMLC 編碼壓縮。
  • 圖片格式:僅支援 WBMP (Wireless Bitmap),需用工具 (ImageMagick convert a.png b.wbmp) 轉換。
  • 編碼:全站統一 UTF-8,WML 強制要求有效 XML。
  • 測試工具:Openwave SDK、Nokia Toolkit、或瀏覽器安裝 WML 檢視外掛 (現代瀏覽器多已移除原生支援)。

結語

WAP/WML 已隨智慧型手機普及而成為歷史名詞,但其「嚴格 XML、輕量標記、閘道器轉換」的設計思想,深刻影響後來的 XHTML-MP、WAP 2.0 乃至現代 AMP、PWA 架構。維護舊系統時,上述規範仍具參考價值。

copyright © 萬盛學電腦網 all rights reserved