PHP是一个开源的(因而是免费的)脚本语言,用来创建动态网页。自从1995年出现以来,它的受欢迎程度远远超出了原来使用最广泛的Perl脚本语言。 事实上,根据当前绝大多数的调查,PHP已跻身于前5位最受欢迎的、最为广泛使用的编程语言。这并不令人感到惊奇,因为它总是与Web虚拟主机账户一起提供,也很容易集成到Web页面中,而且它的执行速度非常快(考虑到它是解释语言),它内置了与MySQL的链接,而后者是世界上使用最为广泛的开源数据库程序。 由于它是由程序员设计的,同时也是为程序员设计的,因此随PHP而来的是大量的令初学者眼花缭乱的功能库和函数库,但是仅仅这些库的一个很小的子集就可以建立Web站点管理员所需要的绝大多数动态网页,这正是本书的内容。 PHP插件正是为Web站点的管理员而设计的,这些管理员已掌握了基本的HTML和PHP编程,希望扩展自己站点的功能。例如,他们希望建立会员专区,通过用户名和口令访问,或者希望建立简单的留言本,诸如此类。在本书中,我们介绍如何用简单的现成的PHP程序实现这些功能。 但是我们并不认为读者熟悉PHP编程语言,因此,对于每个问题,我们都详细进行说明,目的是让读者无须参考其他资料。此外本书故意省略了面向对象编程等高级内容,而本书提供的实例程序在形式上介于C语言与Basic语言之间。我们摒弃了高级开发人员所追求的简洁紧凑的结构,而是选择了更容易理解的、流程更清晰的代码。 本书所有的插件和实例都采用一个完整的、即用型的形式,我们可以直接把它们插入到自己的Web页面中。即使读者对编程知之甚少,但是仍然可以充分利用本书的内容。本书可以根据实际需要进行阅读,因为每一章都自成一体。这意味着,每当我们在自己的网站里遇到一个问题时,只需要参考相关的章节就可以解决这个问题。 为了帮助读者安装和运行这些插件,本书的第1章向读者介绍如何在一个PC、Mac上或Linux系统上建立自己的Web开发服务器,第2章介绍把这些插件集成到自己的程序中的最佳办法。 0.1 PHP简介 PHP最初是由Rasmus Lerdorf于1994年开发的,目的是为了取代一组他一直用来管理自己的个人Web站点的Perl脚本程序。PHP这个缩写符最初代表Personal Home Page(个人主页),但是在第二年他向公众发布一个版本时,他重新定义PHP这个缩写符:超文本处理器(Hypertext Processor)。 即使在最初的时候,Lerdorf希望通过改写语言分析器,使PHP成为一个灵活的可扩展的编程语言。时至今天,这仍然是这个项目的一个重要宗旨。现在PEAR(PHP Extension and Application Repository,PHP扩展和应用程序库)为PHP提供了大量的扩展库。 即使没有这些扩展库,PHP也提供了数以百计的现成的函数--远远多于大多数其他编程语言,使得它成为一个非常丰富的开发平台。毫无疑问,这正是它当前受欢迎程度的一个重要因素。当前PHP已安装在全世界三分之一的服务器上,在作为Web开发平台方面,它仅次于C、C++和Java。 PHP用于Web开发还有其他理由。其一是它非常快的执行速度,即使考虑到它是一个解释语言这个事实后,它的速度仍然非常突出。其二是它的易用性和与MySQL数据库系统的互操作性。第三个因素是它几乎安装在所有Apache Web服务器上。 在PHP之前,Perl是最常用的脚本语言。Perl是由Larry Wall于1987年开发的。Perl的最初开发目的是作为一个通用的脚本语言,主要用来自动报告Unix上的处理过程,它被许多Web开发人员采用,即使到今天,它仍然相当流行。但是,不同于PHP,它本来就不是专为Web站点而设计的,而PHP是从头开始设计的,一直以Web开发为中心,这正好说明了PHP的受欢迎程度远超出Perl的原因。 在语言的学习和使用方面,PHP语言与其他知名编程语言,如C、Java和Perl非常相似,而ASP使用Visual Basic模式(但是ASP.NET支持其他语言)。更有甚者,ASP是建立在COM体系结构上,而PHP没有受这方面的约束,而且它的执行速度更快。 从性能角度来看,PHP的速度非常快,可以支持每天数百万次的访问。根据Zend Technologies的测试,PHP在性能方面经常使竞争者相形见绌。Zend Technologies就是PHP使用的主要引擎的设计者。不同于微软的ASP,PHP可以在很多平台上使用。另一方面,由于它是免费的,因此除了硬件外,使用PHP不需要支持任何费用。 有意思的是,如果用户用Google搜索“filetype:PHP”和“filetype:asp”,就会发现,前者返回74亿个PHP页面,后者只返回18亿个ASP页面。这表示PHP的支持率是ASP的4倍。 用户可能会感到奇怪,你们熟悉的许多网站采用PHP作为它们的主干技术。下面只列出前5个最著名的网站,这些网站全部或部分采用PHP编程语言。 ●Yahoo! 一个很受欢迎的搜索引擎(见图0-1) ●Facebook 一个社交网络网站 ●Wikipedia 一个共同协作的百科知识网站 ●Photobucket 照片共享服务 ●Digg 技术新闻网站 图0-1 Yahoo!可能是广泛使用PHP的最知名的网络公司 实际上,Yahoo!使用PHP一点儿不奇怪,因为Rasmus Lerdorf自2002年以来是Yahoo资深的工程师。 那么PHP为什么如此受欢迎?主要有三个理由。第一,PHP语言可以无缝集成到HTML页面中。即使用户对编程几乎一无所知,只要把文件名.html改名为.php,它们就自动变为PHP程序,尽管它们把自己显示为HTML页面。但是另一方面,每当需要实现一个动态功能时,只需要插入像下面的程序段那样插入一行PHP代码。下面这个程序段显示星期几: 第二,PHP易学。只需要掌握几个简单的PHP函数,并不需要对它有太多的了解,你就成为一名PHP程序员。再加for循环和几个其他结构,很快就可以开始创建自己的动态Web站点。 第三,PHP得到来自PHP编程团体和诸如本书的支持。只需要在Google里输入help PHP,就能看到多达1.25亿个搜索结果! 0.2 本书主要内容 当你需要赶工期急需完成一个项目时,熟悉PHP的全部函数并不能有多大作用,因为PHP函数通常提供非常具体的功能。即使PEAR插件也不是理想的解决方案,因为掌握这些插件需要时间,并且它们还要嵌入到自己的PHP代码中。 这正是作者编写本书的原因,因为本书提供100个现成的插件,用户可以直接把它们插入到自己的程序里,而且只需简单的函数调用就可以使用这些插件。自然,由于所有的项目都各不相同,因此本书只提供实质性的东西,把布局和样式控制在最低限度。这样,允许用户可以自由地选择这些插件,把它们插入到自己的程序,根据自己的要求进行调整。 本书提供的插件为经常遇到的大量问题提供了简单快速的解决方案。这些问题包括文本的不同处理方式、图像的上传和处理、服务器的内容管理、表单处理、用户输入验证、聊天和短信服务、用户验证和安全措施、与第三方Web站点的整合,此外还有许多问题。 利用这些插件,当用户需要一个新功能时不必重新开始,因为很有可能在本书提供的插件里找到你所需要的模块(或一个非常相似的模块)。即使本书没有你所需要的模块,但是本书对每个插件都进行解剖,并且配以详细的说明,因此用户可能会发现,从不同的插件中选取程序段,可以组成自己的程序。 0.3 关于插件 本书所有插件都可以直接运行。假如用户无法访问Internet,可以逐个输入,也可以从http://www.tupwk.com.cn/downpage网站上下载(见图0-2)。在这个网站上,每个插件都以独立的文件出现,或者根据主题组成组。例如,所有验证和安全有关的插件都保存在security.php文件中。 图0-2 本书全部插件都可以从上下载 用户访问这个网站时,可以按照章节的顺序浏览这些插件,也可以直接阅读这些插件代码,为了清楚起见,这些代码的不同成分用不同颜色表示。从这里,用户可以复制、粘贴代码,或者直接下载到自己的计算机中。 0.3.1 本书主要内容 虽然本书的首要目标是向PHP的初学者提供完整的函数和子程序资源,但是它的第二个目标是帮助用户更上一层楼,即建立自己的开发工具箱。因此,每个插件都有完整的文档,每个插件都有详细的说明,并且提出建议,如何改进或扩展这些插件,或者如何使它们适应用户的个人需要。 为了达到这个目的,作者坚持使用PHP的一个基本函数子集,因此,当读者从头到尾仔细阅读本书时,就会熟悉这些函数。除了一些不可避免的情形外,本书尽量不使用面向对象(OOP)等高级技术,因此大多数插件都工作在过程模式。当然,面向对象是一个强有力的工具,如果读者还不会使用面向对象编程,则需要学习,因为读者将发现,它会显著提高编程效率。 虽然,本书不是一本编程手册,也不是一个教学指南,但是确实希望读者仔细阅读每个插件的说明部分,而不是把插件插入到自己的项目里就了事。这样,读者就会掌握本来需要几年时间才能掌握的编程技巧。耳濡目染,读者将进一步掌握PHP编程语言。 0.3.2 插件许可说明 用户在自己的项目上可以免费使用本书的任意插件,如有必要可以进行修改,也无需注明来自本书--当然如果用户确实注明来自本书,本书作者向您表示谢意。 但是,在没有经过出版社同意的情况下,读者不可以出售、赠送或者以任何其他方式发布本书的插件,不管是采用书面形式还是电子形式。 0.4 合作站点 本书的合作站点是http://www.tupwk.com.cn/downpage。从该网站可以下载全部100个插件程序和读者测试用的实例程序。这个网站还提供其他内容,如80 000个单词的字典和地理定位IP数据文件。 本网站最好配合本书使用。当读者阅读某一章内容,同时访问这个网站,在屏幕上显示每个插件的代码,它们都用突出颜色表示程序中的语法,因此很容易看出程序的结构。 如果读者愿意,只需要单击链接按钮,就可以把某个插件复制和粘贴到自己的程序中。或者如果读者喜欢,也可以把全部插件下载到自己的计算机里,再从这里上传到自己的个人网站上。 为了方便用户访问这些插件,我把全部插件进行分组,每组10个插件,每组对应一个主题,如图像处理或文本处理,等等。读者可以复制和粘贴这些文件,也可以用PHP的include命令把这些文件插入到自己的程序中。 此外,这个网站上还有一个博客和一个用户论坛。博客向用户提供最新的开发新闻。在论坛里,用户可以共享自己的开发经验。