PHP與WAP網站!

技術小牛人發表於2017-11-22
WAP的發展離不開其WEB的底蘊,畢竟,整個WAP協議的制定參照了WEB的模型,並且儘可能地沿用了Internet的諸多標準和技術,如WML語言脫胎於HTML與XML,WMLscrīpt與傳統的指令碼語言也很相似。WAP已經不是新名詞了,它與傳統的國際網際網路密不可分地結合著,在結構上如此,在技術上更是如此。 

 

在WAP協議中提到WAP頁面所使用的標記語言為WML,當需要進行較高階的操作,如使用終端機的某些資源時,可以使用WMLscrīpt指令碼語言,這兩種語言很簡單,甚至可以用簡陋來形容,特別是它們對數 據庫的操作幾乎無能為力,這種”缺陷”與WAP廣闊的商務和應用前景格格不入,但我們並不是無能為力的,由於WAP和WWW的交融,我們仍然可以使用WWW的技術與資源來解決數 據庫的訪問問題,因為畢竟多數數 據庫仍處於有線網路內。 

 

目前最流行的網頁程式語言和數 據庫的搭配是什麼?相信很多人會說出”PHP”與”MySQL”這兩個名字。它們屬於WWW或者有線網際網路的範疇,由於使用方便與功能強大的特點而美名傳播,那麼它們能夠為WAP服務嗎?答案是肯定的。不熟悉WAP或者PHP的人或許有些不解,畢竟在傳統意義上PHP提供的是WWW的內容與服務,對於WAP,它們能”相容”嗎? 


PHP粗解 

看了WAP的介紹,大家應該開始逐步理解PHP為何仍能為WAP服務了。PHP與HTML、WML、Javascrīpt、Java都不一樣,它是在伺服器端執行的,而Javascrīpt、Java等都執行在瀏覽器端,相對於WAP,WMLscrīpt執行於客戶機端,但是,以上的這些語言都可以很容易與PHP結合起來。    


PHP具有很大的靈活性,在WWW中,它可以生成所需要的任何HTML程式碼,甚至Javascrīpt程式碼。同樣,在WAP中,我們仍然可以利用PHP這種動態、靈活的特點,生成任意的WML程式碼,這樣,PHP自然能夠為WAP服務。    

 

之所以使用PHP來提供WAP服務,除了它靈活的特點外,還由於PHP可以方便的使用資料庫。使用者可以使用PHP存取Oracle、Sybase、MS SQL、MySQL、dBase、Informix等任何支援ODBC標準的數 據庫,這點正好迎合了WAP商務的需求。    


在實用中,一般需要建立PHP檔案,當使用者向伺服器發出瀏覽該PHP檔案的請求時,伺服器將根據檔案中的程式碼產生相應的HTML或WML內容,併傳送給瀏覽器或WAP終端。    


PHP-WML 

PHP的系統平臺、工作方式、安裝方法,這些都不在本文的討論範圍內,畢竟我們的重點是PHP如何與WAP協作。一般而言,為了能讓PHP工作,我們需要帶有PHP模組的Web伺服器,或者說支援PHP的伺服器,Apache是世界上最流行的Web伺服器,另外,我們還需要安裝PHP軟體以及如MySQL這樣的資料庫,具體內容可以查閱相關書籍或網站。下面我們討論如何讓PHP產生WML程式碼。 

 

在WWW中,PHP產生的第一行內容往往是: content-type: text/html 

 

但是,WAP終端是讀不懂這樣的標題的。WAP終端從伺服器下載的單位是Deck,瀏覽的單位是Card,一般一個Deck就組成一個WML檔案。那麼,為WAP服務時,PHP檔案中往往需要包含如下的程式碼:header(“Content-type:text/vnd.wap.wml”); 

echo “<xml version=\”1.01″>
” 

echo”<! DOCTYPE wml PUBLIC \”-//WAPFORUM//DTD WML 1.1//EN\”\”http://www.wapforum.org//DTD//wml_1.1.xml\”>
“;  以上三行程式碼產生了WML檔案(Deck)的檔案頭,這樣WAP終端就可以識別所下載的Deck是否WML格式,並且接著顯示餘下的Deck內容。 

 

下面是一個最簡單的Deck,它在WAP終端上顯示”Hello World”。 <?xml version=”1.0″ encoding=”ISO-8859-1″?> <! DOCTYPE wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN” “http://www.wapforum.org//DTD//wml_1.1.xml”> 

</xml> 

<!–Nokia Parser Info hone = Nokia 7110; Height = 90; Width = 130; CurrentDeckSize = 38; MaxDeckSize = 1600; CardsOnEachLine = 5; CardsVerticalGap = 30–> 

</card id=”card1″ ōrdered=”true” newcontext=”false”> 

<p align=”left”> 

Hello World 

</p> 

</card> 

</wml>
我們建立的相應的PHP檔案如下:
<?php 

header(“Content-type:text/vnd.wap.wml”); 

echo “<?xml version=\”1.0\”>
“; 

echo “<!DOCTYPE wml PUBLIC \”-//WAPFORUM//DTD WML 1.1//EN\” \”http://www.wapforum.org//DTD//wml_1.1.xml\”>
“; 

echo ”
“; 

echo “<!–Nokia Parser Info: Phone = Nokia 7110; Height = 90; Width = 130; CurrentDeckSize = 38; MaxDeckSize = 1600; CardsOnEachLine = 5; CardsVerticalGap = 30–>
“; 

echo “<card id=\”card1\” ōrdered=\”true\” newcontext=\”false\”> “; 

echo “<p align=\”left\”>
“; 

echo “Hello World”; 

echo “</p>”; 

echo “</card>”; 

echo “</wml>”; 

?>   
我們可以將該檔案存為index.php,當WAP終端瀏覽該網站時,Web伺服器會自動根據index.php的內容產生如上所列的WML內容,併傳送給閘道器進行處理。WAP終端收到該Deck後,將會在螢幕上顯示”Hello World”的字樣。 

 

以上是關於PHP在WAP中最簡單的應用,它只是簡單地產生若干行WML程式碼,並沒有牽扯到資料庫的訪問。其實,PHP強大的功能可以為WAP提供很豐富的服務,而最值得挖掘的就是其強大的資料庫支援,這些將在以後的文章中討論。

 

本文轉自 

朱志兵 51CTO部落格,原文連結:http://blog.51cto.com/richardzhu/196735 ,如需轉載請自行聯絡原作者


相關文章