PHP教程.应用实例--5


 php生成WAP页面
  WAP(无线通讯协议)是在数字移动电话、个人手持设备(PDA等)及计算机之间进行通讯的开放性全球标准。由于静态的WAP页面在很多方面不能满足用户个性化的服务请求,因此通过WAP服务器端语言产生动态的WML页面,具有很广泛的应用价值和很高的商业价值。

  WAP应用结构非常类似于Internet,一个典型的WAP应用请求是这样的:首先,具有WAP用户代理功能的移动终端(WAP手机等)通过内部运行的微浏览器(Micro Browser)对某一网站以无线方式发送WAP服务请求。该请求先由WAP网关截获,对信息内容进行编码压缩,以减少网络数据流量,同时根据需要将 WAP协议转换成HTTP协议,然后将处理后的请求转送到相应WAP服务器。在WAP服务器端,根据页面扩展名等性质,被请求的页面直接或由服务器端脚本解释后输出,再经网关传回用户。

  从上述WAP应用流程可以看到,生成动态WAP页面与动态产生Web网页的过程非常类似。但是由于WAP应用使用的WML语言来源于语法严格的XML,因此要求输出的格式必须按WAP网页的规范输出。同时,由于WAP协议的应用范围、移动客户端的软硬件水平等特殊性,对每次输出的页面的大小、图像的格式及容量都有一定限制。下面我们以PHP脚本语言为例,看看如何动态输出WAP页面。

一、设置WEB服务器

  首先你的 Web服务器要安装好PHP,即能处理PHP脚本程序。其次,为使Web服务器能同时识别和处理PHP、WML、WBMP等文件,Web 服务器的MIME表需添加以下的几种文件类型。

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

  二、用PHP输出简单动态WAP页面

  下面有一个最简单的PHP生成WAP页面的例子。注意由于需要PHP解释器来解释该程序,并输出WAP页面,因此所有类似程序应以.php为扩展名。

  <?php
  header(″Content-type: text/vnd.wap.wml″);
  echo (″<wml> <card> <p>″);
  echo date( ″l dS of F Y h:i:s A″ );
  echo (″</p></card></wml>″);
  ?>

  该例子在WAP手机模拟器中可以浏览,输出当前日期时间,而在普通的浏览器中无法识别,甚至会被认为是错误下载。这是因为在程序开头就声明了该输出文档为WML类型,该类型只有WAP设备能够识别并解释。值得注意的是,我们常见的HTML语言对规范性要求不严,大多数浏览器能“容忍”其中相当多的编写错误,而WML规范相当严格,一点失误都可能导致无法输出所需页面。

  一旦我们知道了用PHP脚本输出WAP页面的标准过程,我们就能够使用PHP强大的功能配合以WML语言的交互处理以及WML Script的简单脚本,开发出适合我们需要的应用系统了。

三、用PHP动态生成图像

  WAP应用使用一种特殊黑白的图像格式WBMP。我们可以用一些工具来将已有图像转换成WBMP格式,然后在WML文档中使用。但是在WAP 站点上如果能动态地生成所需图像如K线图等,将会有广阔的应用前景。幸运的是,PHP的GD库(版本1.8以上)已经提供了相应函数。

  <?PHP
  Header(″Content-type: image/vnd.wap.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);
  ?>

  该文件将在WAP模拟器中显示一个黑色矩形框。注意要使用GD的图像函数库,必须在PHP配置中加载PHP_GD.DLL库文件。

  四、在PHP中处理汉字

  WAP作为一种全球应用,选择了UNICODE 2.0作为其标准字符集编码,以便能同时处理包括英文、中文、日文、法文等多种文字。而我们平常处理汉字使用的是GB2312编码,不同的内码标准势必不能通用,因此如果不在两种编码之间通过码表进行转换,就会出现汉字乱码现象。现在已经有较成熟的GB-2312与UNICODE编码转换的程序和函数,并在ASP、PHP、JSP等系统中使用,我们可以在一些技术站点上找到它们。

  目前的大多数WAP手机(Nokia7110、爱立信R320S等等)都是使用UTF-8编码的,也就是采用UNICODE来编码。这样,如果我们直接在WML使用中文字符(GB2312编码),将会产生乱码,手机用户无法识别,所以我们在输出中文之前,要使用程序或函数对中文进行 UNICODE的编码。而在少数支持GB2312编码的手机或WAP终端设备中,我们可以在程序中定义好文档的内码类型后即可直接正确显示汉字,例如:

  <?php
  header(″Content-type: text/vnd.wap.wml; charset=gb2312″);
  echo (″<wml><card><p>″);
  echo (″中文测试″);
  echo (″</p></card></wml>″);
  ?>

 

本文作者:



相关阅读:
在SUSE Linux下安装VNC的方法
MySQL的1067错误解决
asp.net 取消缓存相关问题说明
VMWare虚拟机上安装Ubuntu Linux的方法
SQL Server连接中的三个最常见错误
ASP实现多域名同一空间的处理实例
标记语言——为文字指定CSS样式
用javascript实现jquery的document.ready功能的实现代码
了解Windows 2000 DNS服务器区域的类型区别
收藏的asp.net文件上传类源码
HTML代码学习:DOCTYPE的缩写
实现跨域名Cookie
MS SQL的连接处理解决方案
Windows Server 2008的安装与管理四
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 人教版九年级上册六单元作文:话说千古风流人物—作文900字 农行×支行先进柜员——让青春在金融事业中闪光 县首届瓜果节闭幕词 亲自造句 生命的高处是成熟550字 大学生暑期三下乡活动个人总结 外公,我错了…… 初二地理教师述职报告 大全伟 2013中秋祝福语短信大全 《观察日记——小蒜的生长》系列.后续作文700字 小学五年级作文600字:补写《无人售报处》 如果爱忘了、 到什么山唱什么歌 夕阳啊,你不要走的那么匆忙 富翁能够赚钱必备的法则 完美老婆应有的素质(生活杂谈经典语录) 小学五年级作文500字:假如我当班长 假日游大海 稻盛和夫谈工作价值 我们工作是为了什么 善良是心间一朵莲花开 春天,忘记一个人 小学五年级作文450字:季末中的寂寞 载着万千思绪 小学六年级作文500字:家乡的正月十五 浣溪沙(儿辈欲九日词而尚远,用“满城风雨近得阳”填成浣溪沙) 一只小蝴蝶的幸福作文800字 优秀入党志愿书范文模板集锦 小学五年级作文500字:夏夜的星空 领导班子及成员贯彻执行党风廉政建设责任制情况进行自查的报告 医生入党转正申请书范文 大学周末露天舞会策划书 伤感日志:我爱上了一个有妇之夫 英语十句经典名言 永远坐前排 东亚自由贸易区建立的优劣势分析及其途径选择 晚秋如梦 我与英雄联盟作文400字 哭李郢端公 杂咏(六十六) 2011年上半年某市某区环境保护局工作总结 我的书屋我的梦征文600字 初见我的初中生活 聪明作文200字 小学六年级作文500字:秋天的窗口 只是淡淡的喜欢 教师教育实习自我鉴定 串门记作文400字 写给生病赵老师的慰问信范文 逛名店

Copyright © 2016 phpStudy |