WML,Apache,和 PHP 的介绍


Posted in PHP onOctober 09, 2006

在公司的网站中, 我发现需要一个可以无线接收我的电子邮件,股市资讯等. 不想要付钱给人来得到我要的资讯, 我决定了开发一个无线网站.这样的资讯在网际网路上是没问题的,但是它被分散得难以收集。我需要可以执行 php ,存取资料库,并且我需要 PHP 为我做另外的功能。这篇文章含盖了wml 的基础, 如何建立你的 apache Server 和 php 。这些基础可让你建立环境并且自己学习往後的应用.
 

需 求
你要对 Apache Web Server, Php 和 html 有点经验. 对系统的要求来说,我是用 apache 1.3.9, php3, 和 Red Hat Linux 6.0 来示范. 我还没碰到在 windows 上跑 Apache, 和 PHP3 或 PHP4 上的任何问题.

在这篇文章,我将指导你接触的领域: wml 的介绍,在 Apache 上设定无线 appications ,并且建立你的第一个 WML/PHP 网页.大部份的资讯可从网际网路上收集.

WML 简 介
WML 代表无线的标注语言. WAP 电话或类似的设备被用来以 WML 写成的网页。WML 基于它类似於 XML 的句法和 scrictness 。使用过了 html 的任何人将不有问题学习 WML 。许多标签和属性是一样的,况且标签不多. WML 允许程式开发者开发动态的内容, 尽管为这篇文章我们将以PHP作为动态的语言.

WML 基 础
在 WML 你能使用许多子页 ( 叫 "cards'' ) 在一个 WML 页中 (叫 " deck") .每个 WML card 的作用像在网页中被显示的内容.下列将是我们 .wml 页的例子 。在我的 Server 上,我在 ~ /wireless/home.wml 储存了这个档案

  <wml>
   <card id='home'> <p> 我的第一个测试页 </p>
   </card>
   </wml>

不同于 HTML ,如果你不colse 标签, 例如 <wml> </wml>,则你的程式码将不正确. 此例子会在任何无线的设备上产生一简单的测试信息“我的第一个测试页”。

设 定 Apache
好, 现在有趣的部分.为了 apache 能 catch 住无线设备到访你的Server, 你需要建立你的 httpd.conf ( 我的档案位於 /etc/httpd/conf/) 档案, 我用 PHP3 因此所有的变化会被记录。在你开始以前,你可以备份你的 httpd.conf 档案,以防万一:)

步骤 1 :第一, 我们需要 AddType 功能增加一新的 MIME 类型。你需要到你定义 php 的 Script 中。看起来像下面一样:

<IfModule mod_php3.c>
AddType application/x-httpd-php3 .php3 .php .phtml

AddType application/x-httpd-php3-source .phps

</IfModule>

要改为:

 

<IfModule mod_php3.c>
AddType application/x-httpd-php3 .php3 .php .phtml .wml

AddType application/x-httpd-php3-source .phps
</IfModule>

这会用 PHP compiler 在所有的 .wml 页.

步骤 2 :去除Mark(Uncomment)apache Load Module 和 Add Module

变更:

#LoadModule rewrite_module modules/mod_rewrite.so

#AddModule mod_rewrite.c
 

成:

LoadModule rewrite_module modules/mod_rewrite.so

AddModule mod_rewrite.c

步骤 3 : 用 apache mod_rewrite module (只适用 1.2+版以上 ). 用这个,你可以即时的 rewite requested URL(当条件符合时). 需要把这片断码放在网页的底部.

 

RewriteEngine On

# Catch most WAP browsers

RewriteCond %{HTTP_ACCEPT} text/vnd\.wap\.wml [OR]

# WinWAP, WAPjag

RewriteCond %{HTTP_USER_AGENT} wap [OR]

#Nokia emulators (sdk)

RewriteCond %{HTTP_USER_AGENT} 7110

# Rewrite to where your wireless page is located

RewriteRule ^[\./](.*)$ /home/mydirectory/wireless/home.wml [L]

现在要重新启动 apache server.

 

产生你第一个无线 WML/PHP 网页
Ok, 既然我们万事俱备, 让我们建立第一个网页。为了能正常运作,你需传送正确的 header 资讯.
<?php

# Send the header information<br>
header("Content-type: text/vnd.wap.wml");

?>

# put in the wml code
<wml>

<card id='home'>

<p>

My first test page

<p>
</card>
</wml>

你刚完成了你的第一个“简单”的无线网页。现在, 让我们试著更努力做一些较难的东西吧。  

你需要检查你 WAP 兼容的网站设备。我使用 Phone.com 软件开发工具包, 它包含 UP.Simulator , 可以检查我的无线网页。选择不同的电话并且看他们的无线网页通过不同的设备时看起来的长像。

更多的资讯在:

http://updev.phone.com
http://www.wapforum.org
http://www.wap.com
http://www.waplinks.com

PHP 相关文章推荐
简单的php数据库操作类代码(增,删,改,查)
Apr 08 PHP
关于url地址传参数时字符串有回车造成页面脚本赋值失败的解决方法
Jun 28 PHP
smarty获得当前url的方法分享
Feb 14 PHP
php设计模式之命令模式使用示例
Mar 02 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
Mar 17 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
Aug 17 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
PDO::beginTransaction讲解
Jan 27 PHP
BBS(php &amp; mysql)完整版(四)
Oct 09 #PHP
BBS(php &amp; mysql)完整版(一)
Oct 09 #PHP
建立动态的WML站点(二)
Oct 09 #PHP
建立动态的WML站点(一)
Oct 09 #PHP
建立动态的WML站点(三)
Oct 09 #PHP
Session的工作方式
Oct 09 #PHP
用Flash图形化数据(一)
Oct 09 #PHP
You might like
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
jQuery解决iframe高度自适应代码
2009/12/20 Javascript
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
jquery键盘事件介绍
2011/01/31 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
jQuery中val()方法用法实例
2014/12/25 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
详解vuejs之v-for列表渲染
2017/06/22 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
Python super()方法原理详解
2020/03/31 Python
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
幼师专业毕业生自荐信
2013/09/29 职场文书
高中班长自我鉴定
2013/12/20 职场文书
环卫个人总结
2015/03/03 职场文书
maven 解包依赖项中的文件的解决方法
2022/07/15 Java/Android