2006年9月23日星期六

第四节 动态网站的开发

  在 Internet 上有许多交互式的网站,如留言簿、同学录、网上购物等,这些动态效果仅仅依靠 FrontPage、Dreamweaver 等网页制作软件软件所产生的 HTML页面是较难以实现的,必须采用动态网站开发技术。用 Perl 开发 CGI 程序是比较古老的一种做法,并且其怪异的语法令许多初学者望而却步,不过救世主总算出现了,那就是 PHP。
 
1、认识 PHP

 
  早期 WWW 服务器所使用的 HTML 语言功能十分有限,只能描述简单的内容,难以进行复杂的信息处理,尤其是无法满足 Web 数据库的处理要求。为此人们绞尽脑汁想了很多解决办法,其中 SSI(Server Side Include)技术在目前被认为是一种较好的解决方案。

 
  SSI 说得简单些其实只是一种 WWW 服务器可以识别和理解的脚本,通常将其嵌入到 HTML 页面中,当客户端浏览器在请求这种特殊的网页时,WWW 服务器会对SSI 脚本进行解释,执行相应的动作,并将执行结果输出到最后返回给浏览器的HTML 页面中,从而实现动态效果。

 
  举个简单的例子帮助理解一下,当你登录某个网站时,位于 WWW 服务器端的一段代码 SSI 脚本被激活,它首先获得系统当前时间,然后根据结果判断出现在是上午、下午或者晚上,最后依据判断结果动态生成 HTML 页面给客户端浏览器。这就不难解释为什么你在一天中的不同时刻访问一些网站时,会看到诸如“早上好”、“下午好”、“晚上好”这样不同的欢迎信息。

 
  实现 SSI 的方式有很多种,PHP 是在 Linux 平台下较为流行的一种,其功能十分强大,许多大型的商业网站都是采用 PHP 开发的。PHP 早期的版本只是一个简单的个人主页制作工具,仅包括一个可以解释几条指令的分析引擎和一组用于信息反馈的工具(如留言簿、计算器等)。1995年,PHP 创始人 Rasmus 重写了整个解释器,将个人主页工具、表单集成工具组合在一起,并加入了对 mSQL 数据库的支持,这样就有了 PHP/FI2.0。
 
  到了1997年,PHP 从作者的个人爱好成功地转变为一个有组织的集体活动,整个解释器被重写,形成了 PHP3 的雏形,此时已经有大量的商业化产品(如C2的StrongHold Web Server)开始捆绑 PHP/FI 或 PHP3。

 
  当 PHP3 在自由发展的同时,Zend 公司重写了 PHP 的核心引擎,大大提高了PHP3 的执行效率,这就是现在仍广泛使用的 PHP4。经过优化的 PHP4 执行速度更快,一点也不比传统的 CGI 或 Microsoft 的 ASP 差,更重要的是它还有更多更好的新功能和更丰富的函数库。无论你接不接受,PHP 无疑都将在 CGI 领域中掀起一场新的革命。好了,现在我们就一起开始 PHP 这段愉快的旅程吧。

 
  PHP 实际上是一种解释性的程序设计语言,虽然也能够作为一门单独的语言使用,但更深常见的做法还是将其嵌入到 HTML 网页中,作为开发动态网站的一种方法。下面是一个最简单的 PHP 脚本 test.php:

 
  上页的 PHP 脚本中只有几行有用,其它的都是标准的 HTML 语法。PHP 中的echo 函数类似于 C 语言中的 printf 函数,用于内容的输出,Apache 负责截取PHP 输出信息,并将其插入到 HTML 页面中,这就是 PHP 能够产生动态页面的基本方法。脚本 test.php 经 Apache 处理后将变成类似如下的 HTML 页面:
 
  客户端浏览器负责将最终生成的 HTML 页面显示出来,如图 6-4-1 所示。由于PHP 代码的解释和执行是在 Apache 服务器上完成的,因此客户端浏览器只要能处理普通的 HTML 页面就可以了。
 
图 6-4-1 PHP 页面浏览效果
 
2、搭建 PHP 运行环境

  Apache 和 PHP 简直可以算得上是天作之合。一方面 PHP 可以扩充 Apache 的功能,使其具备了动态能力,而另一方面 Apache 又为 PHP 提供了良好的运行环境,令它的功能可以得到最充分的发挥。不过为了让 Apache 能够支持 PHP,首先还得做些配置才可以。
 
  由于 PHP 的应用范围越来越广,许多 Linux 发行版本都自带了 PHP 软件包,Red Hat Linux AS 4 使用的是 PHP4.2.2,在命令行方式下用 rpm 命令可以查看是否已经安装了 PHP:

  [root@kevin ~]#rpm -qa php
  php-4.2.2-17 (# 已经安装了PHP)

 
  如果没有看到任何输出信息,则表明在安装 Red Hat Linux AS 4 时,可能忘记选择 PHP 软件包了。现在需要以 root 用户的身份登录 KDE,然后单击 KDE 主菜单,从『系统设置』菜单下选择『添加/删除应用程序』命令。当『软件包管理』窗口打开后,在『服务器』区域中将『万维网服务器』套件选中,如图 6-4-2 所示。

 
图 6-4-2 安装 WWW 服务器套件
 
  由于 PHP 只是一个可选的软件包,所以应该单击右侧的『细节』按钮,打开『WebServer 软件包细节』窗口,在『额外软件包』区域中将『php』项选中,如图6-4-3 所示。

 
图 6-4-3 选择 PHP 软件包
 
  选择好要安装的软件包后,单击『软件包管理』窗口中的『更新』按钮,然后按照提示插入安装光盘,就可以完成 PHP 软件包的安装了。

 
  安装好 PHP 后,还需要对 Apache 服务器进行相应的配置,使得两者能协调一致地工作。打开浏览器并登录 Webmin 后单击『服务』→『Apache服务器』,打开『Apache WEB 服务器』页面。由于 PHP 是作为 Apache 中的一个模块动态加载的,因此需要先对 Apache 模块进行配置,如图 6-4-4 所示。

 
图 6-4-4 管理 Apache 模块
 
  单击『Apache模块』图标,进入配置页面,在『活动模块』列表中确保mod_php4 模块已被选中,如图 6-4-5 所示。

 
图 6-4-5 PHP 支持模块
 
  如果找不到该模块,可能需要在『Apache WEB 服务器』页面中单击『重新配置已知的模块』图标,进入『重新配置已知的模块』页面,对 Webmin 支持的Apache 模块进行重新配置。

 
  配置好 Apache 服务器加载的 PHP 模块后,单击『保存』按钮,退回到『Apache WEB 服务器』页面。为了让 Apache 能够通过文件扩展名识别出哪些文件中包含了 PHP 脚本,需要为其添加特定的 MIME 类型。在『Apache WEB 服务器』页面的『虚拟服务器』区域中单击『缺省服务器』图标,进入『虚拟服务器选项』页面,在这里可以对 Apache 服务器支持的 MIME 类型进行管理,如图 6-4-6 所示。

 
图 6-4-6 管理 MIME 类型
 
  单击『MIME类型』图标进入『MIME类型』页面后,首先在『扩展MIME类型』文本框中输入为 PHP 专门定义的 MIME 类型 application/x-httpd-php,然后在『扩展』文本框中为 Apache 服务器指明以哪些扩展名结束的文件将使用 PHP 引擎进行处理,可以为同一种 MIME 类型指定多个与这对应的扩展名,如图 6-4-7 所示。设置好 MIME 类型对应的扩展名后,单击『保存』按钮确定。

 
图 6-4-7 MIME 类型对应的扩展名
 
  好了,重新启动 Apache 服务器吧,现在应该可以处理 PHP 脚本了。可以将前面介绍的那个 test.php 脚本复制到 /var/www/html/ 目录下,然后通过访问http://www.mylinux.org/test.php 来测试一下 PHP 模块的正确性。不过还有一种更好也更全面的测试方法,那就是在 /var/www/html/ 目录下生成一个内容如下的info.php 脚本:

 
  在浏览器中访问该脚本,如果 PHP 模块能正常工作,可以从中获得 PHP 模块运行时的各种信息。
 
3、用 PHP 开发动态网站

 
  许多网站现在都有计数器功能,用于记录一共有多少人访问了该网站。用 PHP实现这一功能十分简单,从中不难领略到 PHP 的迷人魅力。计数器的原理说起来其实很简单:当用户浏览网页时,服务器程序从文件中读取该页面被访问的次数,将添加1后显示给该用户,然后再将新的计数登值存回到文件中。

 
  首先在 /var/www/html/ 目录下生成一个内容如下的 counter.php 文件:

 
  将 PHP 语句加入到 HTML 文件中有以下几种方法:

  第一、
  第二、
  第三、echo"嵌入PHP语句"
  第四、<% echo "嵌入PHP语句" %>
 
  其中第一种和第二种是最常用的方法,即在小于符号后加上问号,然后可加可不加“php”,之后就是 PHP 的程序代码,在 PHP 代码结束后,再加入问号及大于号就可以了。第三种写法对熟悉 JavaScript 的用户来说有相当的亲切感。而那些从 Windows 平台下的 ASP 转向 Linux 平台下的 PHP 用户来说,对第四种写法肯定有种似曾相识的感觉。

 
  编写 PHP 程序最好的方法是先处理纯 HTML 格式的静态页面,然后在需要动态处理的地方插入 PHP 语句,这样开发时可以达到事半功倍的效果。

 
  上述 PHP 计数器程序的核心是 displayCounter 函数。它首先调用 fopen 函数打开保存了计数值的文件,然后从中读出当前的计数值,并将其加1后作为新的计数值显示给当前浏览网页的用户,最后通过 exec 函数执行两条 Linux 命令将新的计数值写入到文件中。

 
  在浏览器中查看该 PHP 文件时,你将看到该段代码为你统计出来的访问次数。

 
  PHP 语法简单、功能强大,是开发动态网站的得力助手,相信你在实际应用中会慢慢喜欢上它的。虽然 Perl、Python、ASP、JSP 等服务器端脚本语言导出不穷,但如果愿意留一次机会给 PHP,它将不会让你失望的。

没有评论: