wap的发展离不开其www的底蕴,毕竟,整个wap协议的制定参照了www的模型,并且尽可能地沿用了internet的诸多标准和技术,如wml语言脱胎于html与xml,wmlscript与传统的脚本语言也很相似。的确,wap虽然是个新名词,但是它却与传统的国际互联网密不可分地结合着,在结构上如此,在技术上更是如此。
在wap协议中提到wap页面所使用的标记语言为wml,当需要进行较高级的操作,如使用终端机的某些资源时,可以使用wmlscript脚本语言,这两种语言很简单,甚至可以用简陋来形容,特别是它们对数据库的操作几乎无能为力,这种"缺陷"与wap广阔的商务和应用前景格格不入,但我们并不是无能为力的,由于wap和www的交融,我们仍然可以使用www的技术与资源来解决数据库的访问问题,因为毕竟多数数据库仍处于有线网络内。
目前最流行的网页编程语言和数据库的搭配是什么?相信很多人会说出"php"与"mysql"这两个名字。它们属于www或者有线互联网的范畴,由于使用方便与功能强大的特点而美名传播,那么它们能够为wap服务吗?答案是肯定的。不熟悉wap或者php的人或许有些不解,毕竟在传统意义上php提供的是www的内容与服务,对于wap,它们能"兼容"吗?
php粗解
看了wap的介绍,大家应该开始逐步理解php为何仍能为wap服务了。php与html、wml、javascript、java都不一样,它是在服务器端运行的,而javascript、java等都运行在浏览器端,相对于wap,wmlscript运行于客户机端,但是,以上的这些语言都可以很容易与php结合起来。
php具有很大的灵活性,在www中,它可以生成所需要的任何html代码,甚至javascript代码。同样,在wap中,我们仍然可以利用php这种动态、灵活的特点,生成任意的wml代码,这样,php自然能够为wap服务。
之所以使用php来提供wap服务,除了它灵活的特点外,还由于php可以方便的使用数据库。用户可以使用php存取oracle、sybase、ms sql、mysql、dbase、informix等任何支持odbc标准的数据库,这点正好迎合了wap商务的需求。
在实用中,一般需要建立php文件,当用户向服务器发出浏览该php文件的请求时,服务器将根据文件中的代码产生相应的html或wml内容,并发送给浏览器或wap终端。
如想获取关于php的信息,可以前往http://www.php.com查看。
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文件中往往需要包含如下的代码:
echo "<xml version=\"1.01">\n"
echo"<! DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"\"http://www.wapforum.org//DTD//wml_1.1.xml\">\n";
以上三行代码产生了WML文件(Deck)的文件头,这样WAP终端就可以识别所下载的Deck是否WML格式,并且接着显示余下的Deck内容。
下面是一个最简单的Deck,它在WAP终端上显示"Hello World"。
</xml>
<!--Nokia Parser Info:Phone = Nokia 7110; Height = 90; Width = 130; CurrentDeckSize = 38; MaxDeckSize = 1600; CardsOnEachLine = 5; CardsVerticalGap = 30-->
</card id="card1" ordered="true" newcontext="false">
<p align="left">
Hello World
</p>
</card>
</wml>
我们建立的相应的PHP文件如下:
DESTOON B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。
header("Content-type:text/vnd.wap.wml");
echo "<?xml version=\"1.0\">\n";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\" \"http://www.wapforum.org//DTD//wml_1.1.xml\">\n";
echo "\n";
echo "<!--Nokia Parser Info: Phone = Nokia 7110; Height = 90; Width = 130; CurrentDeckSize = 38; MaxDeckSize = 1600; CardsOnEachLine = 5; CardsVerticalGap = 30-->\n";
echo "<card id=\"card1\" ordered=\"true\" newcontext=\"false\"> ";
echo "<p align=\"left\">\n";
echo "Hello World";
echo "</p>";
echo "</card>";
echo "</wml>";
?>
我们可以将该文件存为index.php3,当WAP终端浏览该网站时,Web服务器会自动根据index.php3的内容产生如上所列的WML内容,并发送给网关进行处理。WAP终端收到该Deck后,将会在显示屏上显示"Hello World"的字样。
以上是关于PHP在WAP中最简单的应用,它只是简单地产生若干行WML代码,并没有牵扯到数据库的访问。其实,PHP强大的功能可以为WAP提供很丰富的服务,而最值得挖掘的就是其强大的数据库支持,这些将在以后的文章中讨论。










