专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »PHP教程 » phpwap:php生成动态WAP页面 »正文

phpwap:php生成动态WAP页面

来源: 发布时间:星期一, 2009年1月12日 浏览:12次 评论:0
  WAP(无线通讯协议)是在数字移动电话、个人手持设备(PDA等)及计算机的间进行通讯开放性全球标准由于静态WAP页面在很多方面不能满足用户个性化服务请求因此通过WAP服务器端语言产生动态WML页面具有很广泛应用价值和很高商业价值

  WAP应用结构非常类似于Internet个典型WAP应用请求是这样:首先具有WAP用户代理功能移动终端(WAP手机等)通过内部运行微浏览器(Micro Browser)对某网站WebSite以无线方式发送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 

   2、用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 s cript简单脚本开发出适合我们需要应用系统了

   3、用PHP动态生成图像 

  WAP应用使用种特殊黑白图像格式WBMP我们可以用些工具来将已有图像转换成WBMP格式然后在WML文档中使用但是在WAP站点上如果能动态地生成所需图像如K线图等将会有广阔应用前景幸运PHPGD库(版本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库文件

   4、在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; char=gb2312″);
echo (″<wml><card><p>″);
echo (″中文测试″);
echo (″</p></card></wml>″);
?>


0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: