欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Web技术进阶—PHP构建网站_PHP

程序员文章站 2022-06-01 08:36:40
...
  当建设一个网站的时候,绝大多数时候不仅需要它能够提供静态网页访问能力,还希望它能和浏览器用户交互、访问后台数据库提供实时更新的信息等等,一句话,要提供动态网页服务能力。这时,你是选择传统方式的CGI呢,还是选择PHP、ASP等服务器端脚本呢?

  ■从CGI到服务器端脚本

  创建动态网页的标准方式是CGI,这种方式允许Web服务器运行一个CGI程序来回应浏览器的请求。除了要遵从简单的CGI标准之外,CGI程序的开发与普通程序开发没有什么区别。然而,随着要生成的动态网页的数量和复杂程度的增加,这种方式就遇到了困难。

  CGI程序包括两个主要部分,一个是程序代码,另一个是要输出的HTML文档内容,可以称作HTML代码。最早的Web开发者既是程序员,又是网页设计者,但是那时的页面都比较简单,开发者最关心的是程序代码的问题,页面代码基本上不需要太多的调整。而随着包括DHTML、javascript在内的技术发展,使得页面可以设计得非常复杂,而由于出现了各种CGI的程序库,程序代码则变得简单多了。这样每进行一次页面代码的调整,CGI程序就需要改动,以至于最后在CGI程序调试中,调试HTML代码的工作量超过了调试程序代码的工作量。这说明在Web开发中,HTML代码的重要性已经十分明显,使得传统的以程序代码为中心的CGI程序不再是最适合的动态网页处理方式了。

  这样,相当多的程序员对于这种调整HTML代码的工作感到厌倦,尤其随着Internet的商业化,编写CGI程序和进行HTML页面设计已经成为了两种不同的职业。为了解决这个问题,程序员首先使用了模板文件的方法将程序代码和HTML代码分开,CGI程序读取模板文件来获得HTML代码,从而使得在对页面进行较小调整的时候,不需要改动CGI程序。

  基本上每个程序员在自己的CGI程序中使用自定义的模板,然而,如果有一种通用的HTML模板,使用通用的程序进行预处理,这样不就大大减少了程序设计的工作量吗?最简单的模板可以通过替换模板中预定义的变量来完成解释工作,由于这种程序简单而有效,因此就被集成在Web服务器中,以提供比CGI程序更高的效率,这就是最早的服务器端脚本。

  这些早期的服务器端脚本,例如出现在ncsa httpd的SSI,只包括变量的概念,但没有控制语句的概念。后来,不同的程序开发者重新开发了支持控制语句,甚至支持子程序的脚本解释处理程序,使得这些程序不仅能为特定的动态网页服务,而且能够进行编程,因而能够完成CGI程序能完成的所有工作,成为了一种新的编程语言。同样是由于性能的缘故,这些程序被合并入Web服务器本身,这就它成为Web开发的一种新形式。

  ■来自开放资源的PHP

  当前,服务器端脚本已经是开发动态网页的常用方式,虽然CGI仍然具备灵活的优势,但在一般情况下,使用服务器端脚本更容易和方便。然而,与CGI不同的是,服务器端脚本没有一个统一的标准,不同的服务器端脚本使用各自的语法。当前比较常用的有:Active Server Pages(ASP),ColdFusion,Java Servlets,Personal Home Page(PHP)等。这些技术中,既包括有大公司支持的软件,如ASP,也包括通过Internet进行合作开发的开放源代码软件,如PHP。

  PHP正是这样一种服务器端脚本语言,它最开始是由Rasums Lerdorf编写的,只是一个简单的用Perl语言编写的CGI程序,用于记录访问他自己的网页的访问者。以后它又被用C语言重新写过,范围扩大到访问数据库。在这期间,有许多人向Rasums Lerdorf要此程序的拷贝,以便自己使用,Rasums Lerdorf为此写了一些介绍此程序的文档,并发布了PHP v1.0。以后,越来越多的人使用PHP,并强烈要求增加一些其他的特性,如循环语句和数组变量等,这时其他的一些程序员也开始参与PHP源码的编写,对PHP进行了重新编写,PHP v3.0就出现了。当前,使用PHP的网站已经超过80万,并且还在不断地增加。

  除了向浏览器发送动态网页之外,PHP还能发送不同HTTP头标识,使其能提供网页重定位、与Web服务器的安全认证结合的能力、以及设置Cookie。PHP能提供与多种数据库直接互联的能力,包括MySQL、Sybase、Informix、Oracle、MsSQL等,也能支持ODBC。并通过额外的库能够支持会话管理和XML处理(这些库都是基本的库,因此也是PHP用户的基本配置)。从这里我们可以看出,PHP已经不再是简单的服务器端脚本了,按照《PHP3浏览器应用编程》的作者David Medinets的话,PHP是一种应用服务器。因为它不仅仅包括一个完整的编程语言,而且还包括完整的访问数据库的能力、支持Internet协议(如电子邮件和HTTP)的能力,这一整套技术使得PHP能与ASP、ColdFusion、WebSphere互较短长。

  要运行PHP,通常使用Linux或FreeBSD作为操作系统,使用Apache作为Web服务器。当然使用其他操作系统也同样可行,这是因为PHP是一种跨平台的软件,这当然得益于它是开放源代码的软件。但是,如果不使用Apache服务器,那么PHP就只能以CGI的方式运行,这样就不能利用将PHP编译进Apache带来的性能优势。当从www.php3.net中下载了最新版本的PHP并安装配置完毕之后,就可以使用编辑器或网页制作软件来编写PHP代码了。如果你能使用C或Perl进行编程,就会发现PHP编程并不复杂,作为程序语言的PHP比C简单,比Perl易懂。下面是一个最简单的嵌入PHP程序的页面。

  〈HTML〉
  〈HEAD〉〈TITLE〉Test〈/TITLE〉〈/HEAD〉

  〈BODY〉

  〈?PHP $string = ’world!’; ?〉

  〈H1〉Hello,〈?php echo $string ?〉〈/H1〉

  〈/BODY〉

  〈/HTML〉  

  在HTML网页中嵌入的PHP代码,需要以标记结束。上面这个页面将显示Hello,world!的结果。这里可以看出,PHP程序语法与C或Perl非常类似。事实上,PHP来源于C和Perl,支持C和Perl大部分语法和操作符,因此使用PHP对C和Perl程序员都是非常简单的事情。


  ■选择PHP

  虽然PHP已经十分流行,但在国内了解它的人却很少,这当然是因为它不是商业软件,缺乏市场运作。即使在听说过PHP的人们中,不少人也抱有这样的看法,PHP既没有商业公司的支持,又缺乏商业的图形化开发工具,PHP能够和ASP等商业软件一样有前途吗?的确,ASP由于有微软公司的支持,使得它迅速变得十分流行,现在书店中充斥着ASP的相关书籍,而很少能找到介绍PHP的著作,正说明了国内的这种流行趋势。然而,过去一年中整个互联网中PHP使用者稳步增长的事实,却与这些观点截然相反。我认为那些不看重PHP的人至少忽略了以下几个原因:

  1. PHP已经证明是非常实用的软件,性能、可靠性、稳定性非常高,借一个来自武侠小说的比喻,PHP就如同来自江湖下层一步步成名的草莽英雄,而商业软件则如同出身高贵的少年侠士,其成名的原因与其师傅和门派密切相关。PHP具备各种数据类型并支持复杂的文本处理,它甚至支持面向对象,能配置为处理XML等等;更为重要的是PHP的这些功能都是非常实用的,要知道PHP的开发者都是根据自己的需要自愿进行的开发,它具备的功能一定是有着实际用途的。虽不能说PHP比同类产品强,但其实力不容忽视。

  2. PHP是跨平台的产品,它能运行在多种Unix以及Windows NT上,并能访问多种不同的数据库,对很多人来讲,这一点非常重要。商业产品通常要求非常苛刻,只能和特定的操作系统和数据库相互协作。而人们喜欢使用自己已经熟悉的操作系统、Web服务器和数据库,如Linux、Apache和MySQL。

  3. PHP是开放源代码的软件,很多人对此不以为然,然而他们忽视了占Web服务器市场58%的Apache服务器,忽视了Linux、FreeBSD等开放源代码的操作系统,这些开放源代码的软件结合在一起,就形成了一个非常有效的解决方案。

  4. 即便不考虑源代码的因素,PHP不需要任何费用的特点也是商业软件无法相比的。虽然ASP也是免费的,然而很多人忽视了运行Windows NT及MS SQL的费用,而PHP和Linux/FreeBSD、Apache、MySQL相互合作,几乎不需要任何软件费用,当前如果不考虑盗版,究竟有多少人还会坚持ASP呢?

  5. PHP有良好的技术支持,可以通过电子邮件、论坛、网页、IRC等方式获得技术支持。这听起来有些好笑,难道这比商业软件的技术支持更有效吗?事实上依我个人使用商业软件和开放源代码软件的经验,这种技术支持形式相当不错,设想一下,你能够得到来自ASP开发组的技术服务吗?我想更常见的结果是在一通800电话之后,得到的只是一堆无用的建议,最后你终于厌倦了转来转去的电话。即便是现场服务,也许是某个工程师在一遍又一遍地重装系统,直到系统偶然地运行正常为止,这样也好,系统管理员至少可以装作什么都不懂的样子稍事休息一下。而开放源代码使你能提出更接近故障本质的现象,不但遇到过同样现象的使用者会提供帮助,PHP的开发者也能提供帮助。有什么技术支持比几十万个使用者,其中大多数都是使用PHP的老手,提供的帮助更有效呢。

  无论如何,商业支持并不是一个软件流行的必要条件,反过来倒是正确的,最近的例子Linux不就是由于流行而得到了商业支持的吗?例如最新版本的网页制作工具DreamWaver 3.0,也开始支持PHP的标记,允许在其中直接进行PHP代码的编写了。越来越多的国内Web开发者也开始将目光投向PHP,其中大多数选择了Unix (Linux,FreeBSD, Solaris, AIX, HP-UX等等)作为Web站点的操作系统,而国内出版计算机图书的出版社也会陆续出版一些PHP的著作,显然这又会有利于PHP的推广和发展。