首页 »PHP教程 » phpwap:php生成动态WAP页面 »正文
phpwap:php生成动态WAP页面
来源: 发布时间:星期一, 2009年1月12日 浏览:12次 评论:0
WAP(无线通讯协议)是在数字移动电话、个人手持设备(PDA等)及计算机的间进行通讯 ![](/icons/47542de.gif) 开放性全球标准 ![](/icons/47542dou2.gif) 由于静态 ![](/icons/47542de.gif) WAP页面在很多方面不能满足用户个性化 ![](/icons/47542de.gif) 服务请求 ![](/icons/47542dou.gif) 因此通过WAP服务器端语言产生动态 ![](/icons/47542de.gif) WML页面 ![](/icons/47542dou.gif) 具有很广泛 ![](/icons/47542de.gif) 应用价值和很高 ![](/icons/47542de.gif) 商业价值 ![](/icons/47542dou2.gif) WAP应用结构非常类似于Internet ![](/icons/47542dou.gif) ![](/icons/47542yi.gif) 个典型 ![](/icons/47542de.gif) WAP应用请求是这样 ![](/icons/47542de.gif) :首先 ![](/icons/47542dou.gif) 具有WAP用户代理功能 ![](/icons/47542de.gif) 移动终端(WAP手机等)通过内部运行 ![](/icons/47542de.gif) 微浏览器(Micro Browser)对某 ![](/icons/47542yi.gif) 网站WebSite以无线方式发送WAP服务请求 ![](/icons/47542dou2.gif) 该请求先由WAP网关截获 ![](/icons/47542dou.gif) 对信息内容进行编码压缩 ![](/icons/47542dou.gif) 以减少网络数据流量 ![](/icons/47542dou.gif) 同时根据需要将WAP协议转换成HTTP协议 ![](/icons/47542dou.gif) 然后将处理后 ![](/icons/47542de.gif) 请求转送到相应WAP服务器 ![](/icons/47542dou2.gif) 在WAP服务器端 ![](/icons/47542dou.gif) 根据页面扩展名等性质 ![](/icons/47542dou.gif) 被请求 ![](/icons/47542de.gif) 页面直接或由服务器端脚本解释后输出 ![](/icons/47542dou.gif) 再经网关传回用户 ![](/icons/47542dou2.gif) 从上述WAP应用流程可以看到 ![](/icons/47542dou.gif) 生成动态WAP页面和动态产生Web网页 ![](/icons/47542de.gif) 过程非常类似 ![](/icons/47542dou2.gif) 但是由于WAP应用使用 ![](/icons/47542de.gif) WML语言来源于语法严格 ![](/icons/47542de.gif) XML ![](/icons/47542dou.gif) 因此要求输出 ![](/icons/47542de.gif) 格式必须按WAP网页 ![](/icons/47542de.gif) 规范标准输出 ![](/icons/47542dou2.gif) 同时 ![](/icons/47542dou.gif) 由于WAP协议 ![](/icons/47542de.gif) 应用范围、移动客户端 ![](/icons/47542de.gif) 软硬件水平等特殊性 ![](/icons/47542dou.gif) 对每次输出 ![](/icons/47542de.gif) 页面 ![](/icons/47542de.gif) 大小、图像 ![](/icons/47542de.gif) 格式及容量都有 ![](/icons/47542yi.gif) 定限制 ![](/icons/47542dou2.gif) 下面我们以PHP脚本语言为例 ![](/icons/47542dou.gif) 看看如何动态输出WAP页面 ![](/icons/47542yi.gif) 、设置WEB服务器 首先你 ![](/icons/47542de.gif) Web服务器要安装好PHP ![](/icons/47542dou.gif) 即能处理PHP脚本 ![](/icons/47542chengxu.gif) ![](/icons/47542dou2.gif) 其次 ![](/icons/47542dou.gif) 为使Web服务器能同时识别和处理PHP、WML、WBMP等文件 ![](/icons/47542dou.gif) Web 服务器 ![](/icons/47542de.gif) MIME表需添加以下 ![](/icons/47542de.gif) 几种文件类型 ![](/icons/47542dou2.gif) 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页面 下面有 ![](/icons/47542yi.gif) 个最简单 ![](/icons/47542de.gif) PHP生成WAP页面 ![](/icons/47542de.gif) 例子 ![](/icons/47542dou2.gif) 注意由于需要PHP解释器来解释该 ![](/icons/47542chengxu.gif) ![](/icons/47542dou.gif) 并输出WAP页面 ![](/icons/47542dou.gif) 因此所有类似 ![](/icons/47542chengxu.gif) 应以.php为扩展名 ![](/icons/47542dou2.gif) <?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手机模拟器中可以浏览 ![](/icons/47542dou.gif) 输出当前日期时间 ![](/icons/47542dou.gif) 而在普通 ![](/icons/47542de.gif) 浏览器中无法识别 ![](/icons/47542dou.gif) 甚至会被认为是 ![](/icons/47542cuowu.gif) 下载 ![](/icons/47542dou2.gif) 这是 ![](/icons/47542yinwei.gif) 在 ![](/icons/47542chengxu.gif) 开头就声明了该输出文档为WML类型 ![](/icons/47542dou.gif) 该类型只有WAP设备能够识别并解释 ![](/icons/47542dou2.gif) 值得注意 ![](/icons/47542de.gif) 是 ![](/icons/47542dou.gif) 我们常见 ![](/icons/47542de.gif) HTML语言对规范标准性要求不严 ![](/icons/47542dou.gif) 大多数浏览器能“容忍”其中相当多 ![](/icons/47542de.gif) 编写 ![](/icons/47542cuowu.gif) ![](/icons/47542dou.gif) 而WML规范标准相当严格 ![](/icons/47542dou.gif) ![](/icons/47542yi.gif) 点失误都可能导致无法输出所需页面 ![](/icons/47542yi.gif) 旦我们知道了用PHP脚本输出WAP页面 ![](/icons/47542de.gif) 标准过程 ![](/icons/47542dou.gif) 我们就能够使用PHP强大 ![](/icons/47542de.gif) 功能配合以WML语言 ![](/icons/47542de.gif) 交互处理以及WML s cript ![](/icons/47542de.gif) 简单脚本 ![](/icons/47542dou.gif) 开发出适合我们需要 ![](/icons/47542de.gif) 应用系统了 ![](/icons/47542dou2.gif) 3、用PHP动态生成图像 WAP应用使用 ![](/icons/47542yi.gif) 种特殊黑白 ![](/icons/47542de.gif) 图像格式WBMP ![](/icons/47542dou2.gif) 我们可以用 ![](/icons/47542yi.gif) 些工具来将已有图像转换成WBMP格式 ![](/icons/47542dou.gif) 然后在WML文档中使用 ![](/icons/47542dou2.gif) 但是在WAP站点上如果能动态地生成所需图像如K线图等 ![](/icons/47542dou.gif) 将会有广阔 ![](/icons/47542de.gif) 应用前景 ![](/icons/47542dou2.gif) 幸运 ![](/icons/47542de.gif) 是 ![](/icons/47542dou.gif) PHP ![](/icons/47542de.gif) GD库(版本1.8以上)已经提供了相应 ![](/icons/47542hanshu.gif) ![](/icons/47542dou2.gif) <?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模拟器中显示 ![](/icons/47542yi.gif) 个黑色矩形框 ![](/icons/47542dou2.gif) 注意要使用GD ![](/icons/47542de.gif) 图像 ![](/icons/47542hanshu.gif) 库 ![](/icons/47542dou.gif) 必须在PHP配置中加载PHP_GD.DLL库文件 ![](/icons/47542dou2.gif) 4、在PHP中处理汉字 WAP作为 ![](/icons/47542yi.gif) 种全球应用 ![](/icons/47542dou.gif) 选择了UNICODE 2.0作为其标准 ![](/icons/47542zifu.gif) 集编码 ![](/icons/47542dou.gif) 以便能同时处理包括英文、中文、日文、法文等多种文字 ![](/icons/47542dou2.gif) 而我们平常处理汉字使用 ![](/icons/47542de.gif) 是GB2312编码 ![](/icons/47542dou.gif) 区别 ![](/icons/47542de.gif) 内码标准势必不能通用 ![](/icons/47542dou.gif) 因此如果不在两种编码的间通过码表进行转换 ![](/icons/47542dou.gif) 就会出现汉字乱码现象 ![](/icons/47542dou2.gif) 现在已经有较成熟 ![](/icons/47542de.gif) GB-2312和UNICODE编码转换 ![](/icons/47542de.gif) ![](/icons/47542chengxu.gif) 和 ![](/icons/47542hanshu.gif) ![](/icons/47542dou.gif) 并在ASP、PHP、JSP等系统中使用 ![](/icons/47542dou.gif) 我们可以在 ![](/icons/47542yi.gif) 些技术站点上找到它们 ![](/icons/47542dou2.gif) 目前 ![](/icons/47542de.gif) 大多数WAP手机(Nokia7110、爱立信R320S等等)都是使用UTF-8编码 ![](/icons/47542de.gif) ![](/icons/47542dou.gif) 也就是采用UNICODE来编码 ![](/icons/47542dou2.gif) 这样 ![](/icons/47542dou.gif) 如果我们直接在WML使用中文 ![](/icons/47542zifu.gif) (GB2312编码) ![](/icons/47542dou.gif) 将会产生乱码 ![](/icons/47542dou.gif) 手机用户无法识别 ![](/icons/47542dou.gif) 所以我们在输出中文的前 ![](/icons/47542dou.gif) 要使用 ![](/icons/47542chengxu.gif) 或 ![](/icons/47542hanshu.gif) 对中文进行UNICODE ![](/icons/47542de.gif) 编码 ![](/icons/47542dou2.gif) 而在少数支持GB2312编码 ![](/icons/47542de.gif) 手机或WAP终端设备中 ![](/icons/47542dou.gif) 我们可以在 ![](/icons/47542chengxu.gif) 中定义好文档 ![](/icons/47542de.gif) 内码类型后即可直接正确显示汉字 ![](/icons/47542dou.gif) 例如: <?php header(″Content-type: text/vnd.wap.wml; char =gb2312″); echo (″<wml><card><p>″); echo (″中文测试″); echo (″</p></card></wml>″); ?>
相关文章
读者评论
发表评论
|
|