php生成WAP页面


Posted in PHP onOctober 09, 2006

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>″);

?>  

原作者:不详  
来源:php自由联盟    

PHP 相关文章推荐
深入理解PHP原理之Session Gc的一个小概率Notice
Apr 12 PHP
PHP中Session引起的脚本阻塞问题解决办法
Apr 08 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
May 15 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
Jul 25 PHP
php+xml结合Ajax实现点赞功能完整实例
Jan 30 PHP
php微信公众平台开发类实例
Apr 01 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
Sep 23 PHP
4种PHP异步执行的常用方式
Dec 24 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
Jan 22 PHP
php实现将base64格式图片保存在指定目录的方法
Oct 13 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 PHP
让你同时上传 1000 个文件 (一)
Oct 09 #PHP
让你同时上传 1000 个文件 (二)
Oct 09 #PHP
一个可以删除字符串中HTML标记的PHP函数
Oct 09 #PHP
利用static实现表格的颜色隔行显示
Oct 09 #PHP
PHP 和 XML: 使用expat函数(三)
Oct 09 #PHP
PHP 和 XML: 使用expat函数(二)
Oct 09 #PHP
PHP 和 XML: 使用expat函数(一)
Oct 09 #PHP
You might like
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
php英文单词统计器
2016/06/23 PHP
功能强大的php分页函数
2016/07/20 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
javascript 事件处理、鼠标拖动效果实现方法详解
2012/05/11 Javascript
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
Python 实现自动导入缺失的库
2019/10/29 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
大学生标准推荐信范文
2013/11/25 职场文书
自考生自我评价分享
2014/01/18 职场文书
英文道歉信
2015/01/20 职场文书
检讨书范文
2015/01/27 职场文书
爱的教育观后感
2015/06/17 职场文书
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL