首页 > 开发 > PHP > 正文

WAP与PHP程序设计之基础篇

2024-05-04 23:03:58
字体:
来源:转载
供稿:网友
  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文件中往往需要包含如下的代码:

  header("content-type:text/vnd.wap.wml");
  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 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: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文件如下:

  <?php
  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提供很丰富的服务,而最值得挖掘的就是其强大的数据库支持,这些将在以后的文章中讨论。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表