用 PHP 編程語言開發動態 WAP 頁面

WAP (無線通訊協議)是在數字移動電話、個人手持設備( PDA 等)及計算機之間進行通訊的開放性全球標準協議。隨着無線通訊的不斷髮展,靜態的WAP頁面在很多方面已經不能滿足用戶個性化的要求,因此開發者可以在WAP服務器端使用諸如 PHP 等語言產生動態的 WML 頁面,來滿足用戶的需要。


   WAP 的應用結構非常類似於 Internet,一個典型的 WAP 應用請求步驟描述如下:

   1. 具有 WAP 用戶代理功能的移動終端(如 WAP 手機),通過內部運行的微瀏覽器向某一網站發送 WAP 服務請求。該請求先由 WAP 網關截獲,對信息內容進行編碼壓縮,以減少網絡數據流量,同時根據需要將 WAP 協議轉換成 HTTP 協議。

   2. 協議將處理後的請求轉送到相應 WAP 服務器。在 WAP 服務器端,根據頁面擴展名等屬性,被請求的頁面直接或由服務器端腳本解釋後輸出,再經過網關傳回給用戶。

  從上述的 WAP 應用流程可以發現,生成動態 WAP 頁面與動態產生 Web 網頁的過程非常相似。但是由於 WAP 應用使用的 WML 語言來源於語法嚴格的 XML,因此要求輸出的格式必須按 WAP 網頁的規範輸出。同時,由於 WAP 協議的應用範圍及移動客戶端的軟、硬件配置等侷限性,對每次輸出的頁面的大小、圖像的格式及容量都有一定限制。本文筆者將以 PHP 語言爲例,和廣大網絡程序開發愛好者共同探討動態輸出WAP頁面的方法和應用。

  輸出簡單的動態 WAP 頁面

  由於生成 WAP 頁面的過程和生成一般的 Web 頁面非常類似,筆者通過一個最簡單的 WAP 頁面的例子來介紹。不過提醒一句:由於需要 PHP 解釋器來解釋該程序並輸出WAP頁面,因此所有類似的程序應以“php”爲擴展名哦。

  < ?php

  header("Content-type: text/vnd.wap.wml"); //定義輸出文檔爲 WML 類型

  echo (" ");

  echo ( "Hello WAP" );

  echo ("");

  ?>

  該實例可以在 WAP 手機模擬器中瀏覽,輸出一句經典的“Hello WAP”語句,但是在普通的網絡瀏覽器中是無法識別的,原因很簡單,在程序開頭聲明瞭該輸出文檔爲WML類型,只有 WAP 設備能夠識別並解釋。不過又要提醒一句:常見的 HTML 語言對規範性要求不嚴,大多數瀏覽器能“寬容”地接受其中的編寫錯誤,但是WML的規範相當嚴格,任何的錯誤都可能導致無法輸出所需的頁面。

   實例1 動態生成圖像

  WAP 使用的圖像是一種特殊的黑白圖像格式:WBMP。開發者可以使用一些現有的工具將一般圖像轉換成WBMP格式,然後在 WML 文檔中使用。但是如果在WAP程序中能動態地生成所需圖像(如股市的K線圖),將會使程序有極其廣闊的應用前景。PHP 提供了強大的圖形繪製功能,下面的實例將將在WAP模擬器中顯示一個黑色的矩形框。

   (注意:要使用 GD 的圖像函數庫,必須在 PHP 配置中加載“PHP_GD.DLL”庫文件。)

  < ?PHP

  Header("Content-type: image/vnd.wap.wbmp"); //定義輸出的圖像格式爲 WBMP

  Sim = ImageCreate(50, 50);

  Swhite = ImageColorAllocate(Sim,255,255,255);

  Sblack = ImageColorAllocate(Sim,0,0,0);

  ImageRectangle(Sim, 5, 5, 20, 20, Sblack);

  ImageWBMP(Sim);

  ImageDestroy(Sim);

  ?>

  實例2 處理漢字

  作爲一種全球應用的協議,WAP 選擇了 UNICODE 2.0 作爲其標準字符集編碼,能夠同時處理英、中、日、法等多種文字。但是開發者日常處理的漢字是 GB2312 編碼,不同的內碼標準必定不能通用,因此,如果不在兩種編碼之間通過碼制的轉換,就會出現漢字亂碼的現象。目前的大多數 WAP 手機 (Nokia7110、愛立信 R320S 等等)都使用 UTF-8(即 UNICODE) 來編碼的。如果直接在WML使用中文字符(GB2312 編碼),將會產生亂碼,導致手機用戶無法識別,因此在輸出中文之前,必須使用程序或函數(關於此類的 PHP 函數庫,網絡上已有非常多技術上成熟的產品可以下載)對中文進行 UNICODE 的編碼。而在少數支持 GB2312 編碼的手機或 WAP 終端設備中,開發者只需在程序中定義文檔的內碼類型後,即可直接正確顯示漢字,看一個實例:

  < ?php

  header("Content-type: text/vnd.wap.wml; charset=gb2312"); //定義字符的編碼爲 GB2312

  echo ("");

  echo ("你好");

  echo ("");

  ?>

   在程序的“header”語句中,定義了文字的編碼爲 GB2312,如果用戶的手機支持 GB2312 編碼,將會顯示“你好”的字樣。

  作爲未來網絡通訊的主導,WAP 程序的開發已日趨熱門。相信通過本文的閱讀,能使開發者對使用 PHP 進行 WAP 開發有一個初步的印象,希望廣大讀者能在本文的基礎上,參考WML語言,開發出更加強大的 WAP 應用程序。



摘自:新浪科技
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章