用PHP编程语言开发动态WAP页面


Posted in PHP onOctober 09, 2006

文/成都 yell

WAP(无线通讯协议)是在数字移动电话、个人手持设备(PDA等)及计算机之间进行通讯的开放性全球标准协议。随着无线通讯的不断发展,静态的WAP页面在很多方面已经不能满足用户个性化的要求,因此开发者可以在WAP服务器端使用诸如PHP等语言产生动态的WML页面,来满足用户的需要。

WAP的应用结构非常类似于Internet,一个典型的WAP应用请求步骤描述如下:

1. 具有WAP用户代理功能的移动终端(如WAP手机),通过内部运行的微浏览器向某一网站发送WAP服务请求。该请求先由WAP网关截获,对信息内容进行编码压缩,以减少网络数据流量,同时根据需要将WAP协议转换成HTTP协议。

2. 协议将处理后的请求转送到相应WAP服务器。在WAP服务器端,根据页面扩展名等属性,被请求的页面直接或由服务器端脚本解释后输出,再经过网关传回给用户。

从上述的WAP应用流程可以发现,生成动态WAP页面与动态产生Web网页的过程非常相似。但是由于WAP应用使用的WML语言来源于语法严格的XML,因此要求输出的格式必须按WAP网页的规范输出。同时,由于WAP协议的应用范围及移动客户端的软、硬件配置等局限性,对每次输出的页面的大小、图像的格式及容量都有一定限制。本文笔者将以PHP语言为例,和广大网络程序开发爱好者共同探讨动态输出WAP页面的方法和应用。

输出简单的动态WAP页面

由于生成WAP页面的过程和生成一般的Web页面非常类似,笔者通过一个最简单的WAP页面的例子来介绍。不过提醒一句:由于需要PHP解释器来解释该程序并输出WAP页面,因此所有类似的程序应以“php”为扩展名哦。

< ?php

header("Content-type: text/vnd.wap.wml"); //定义输出文档为WML类型

echo (" ");

echo ( "Hello WAP" );

echo ("");

?>

该实例可以在WAP手机模拟器中浏览,输出一句经典的“Hello WAP”语句,但是在普通的网络浏览器中是无法识别的,原因很简单,在程序开头声明了该输出文档为WML类型,只有WAP设备能够识别并解释。不过又要提醒一句:常见的HTML语言对规范性要求不严,大多数浏览器能“宽容”地接受其中的编写错误,但是WML的规范相当严格,任何的错误都可能导致无法输出所需的页面。

实例1 动态生成图像

WAP使用的图像是一种特殊的黑白图像格式:WBMP。开发者可以使用一些现有的工具将一般图像转换成WBMP格式,然后在WML文档中使用。但是如果在WAP程序中能动态地生成所需图像(如股市的K线图),将会使程序有极其广阔的应用前景。PHP提供了强大的图形绘制功能,下面的实例将将在WAP模拟器中显示一个黑色的矩形框。

(注意:要使用GD的图像函数库,必须在PHP配置中加载“PHP_GD.DLL”库文件。)

< ?PHP

Header("Content-type: image/vnd.wap.wbmp"); //定义输出的图像格式为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);

?>

实例2 处理汉字

作为一种全球应用的协议,WAP选择了UNICODE 2.0作为其标准字符集编码,能够同时处理英、中、日、法等多种文字。但是开发者日常处理的汉字是GB2312编码,不同的内码标准必定不能通用,因此,如果不在两种编码之间通过码制的转换,就会出现汉字乱码的现象。目前的大多数WAP手机(Nokia7110、爱立信R320S等等)都使用UTF-8(即UNICODE)来编码的。如果直接在WML使用中文字符(GB2312编码),将会产生乱码,导致手机用户无法识别,因此在输出中文之前,必须使用程序或函数(关于此类的PHP函数库,网络上已有非常多技术上成熟的产品可以下载)对中文进行UNICODE的编码。而在少数支持GB2312编码的手机或WAP终端设备中,开发者只需在程序中定义文档的内码类型后,即可直接正确显示汉字,看一个实例:

< ?php

header("Content-type: text/vnd.wap.wml; charset=gb2312"); //定义字符的编码为GB2312

echo ("");

echo ("你好");

echo ("");

?>

在程序的“header”语句中,定义了文字的编码为GB2312,如果用户的手机支持GB2312编码,将会显示“你好”的字样。

作为未来网络通讯的主导,WAP程序的开发已日趋热门。相信通过本文的阅读,能使开发者对使用PHP进行WAP开发有一个初步的印象,希望广大读者能在本文的基础上,参考WML语言,开发出更加强大的WAP应用程序。

大众网络报

PHP 相关文章推荐
php 图片上添加透明度渐变的效果
Jun 29 PHP
用PHP读取flv文件的播放时间长度
Sep 03 PHP
php 在文件指定行插入数据的代码
May 08 PHP
sphinx增量索引的一个问题
Jun 14 PHP
php页面防重复提交方法总结
Nov 25 PHP
排序算法之PHP版快速排序、冒泡排序
Apr 09 PHP
PHP+FastCGI+Nginx配置PHP运行环境
Aug 07 PHP
smarty内置函数capture用法分析
Jan 22 PHP
php自动给网址加上链接的方法
Jun 02 PHP
Yii2 GridView实现列表页直接修改数据的方法
May 16 PHP
thinkPHP批量删除的实现方法分析
Nov 09 PHP
laravel 错误处理,接口错误返回json代码
Oct 25 PHP
用PHP读注册表
Oct 09 #PHP
用PHP调用数据库的存贮过程
Oct 09 #PHP
php实现ping
Oct 09 #PHP
PHP也可以?成Shell Script
Oct 09 #PHP
浅谈Windows下 PHP4.0与oracle 8的连接设置
Oct 09 #PHP
Oracle 常见问题解答
Oct 09 #PHP
第1次亲密接触PHP5(1)
Oct 09 #PHP
You might like
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
10个基于浏览器的JavaScript调试工具分享
2013/02/07 Javascript
在javascript中对于DOM的加强
2013/04/11 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
javascript 产生随机数的几种方法总结
2017/09/26 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
2018/11/06 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
python实现函数极小值
2019/07/10 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
学校十一活动方案
2014/02/01 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
手机银行营销方案
2014/03/14 职场文书
大学生学习计划书
2014/09/15 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
大学生十八大感想
2015/08/11 职场文书
校园广播稿范文
2015/08/19 职场文书
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python