静态Web页面的时代已经过去了。多年来,Web只不过是用于存放若干简单的链接在一起的HTML页面。但是,今天的用户期待更吸引入的页面——它们会频繁更新,并且提供个性化的体验。同时,Web站点管理员希望站点更容易更新和维护。由于如此种种原因,只用静态HTML文件构建站点已不再受欢迎。Web现在用于存放的是动态的、往往由数据库驱动的Web应用程序。.
作者以多年的Web开发经验以及之前编写有关技术图书的经验,完成了本书。本书重点在于以最高效的方式介绍最重要的知识。它将介绍如何开始开发动态Web站点,并给出了大量示例代码来帮助读者起步。读者所要做的就是满怀热忱来学习。
好吧,我们这就开始……
0.1 什么是动态Web站点
动态Web站点非常灵活、强大,将其描述为应用程序而不仅仅是站点会更准确。动态Web站点:
□能够对不同的参数做出响应(例如,一天中的某个时间,或者访问者的Web浏览器版本):
□具有“记忆”,允许用户执行注册、登录、电子商务以及类似的过程;
□通常包含HTML表单,使得人们可以执行查找、提供反馈等;
□通常具有允许管理员管理站点内容的界面;
□更易于维护、升级和构建。
有许多技术可用于创建动态Web站点。最常用的技术是ASP.NET(ActiveServer Pages,Microsoft的产品)、JSP(JavaServer Pages)、ColdFusion和PHP。动态Web站点不一定依赖于数据库,但是,越来越多的动态Web站点正在这样做,特别是由于像MySQL这样的数据库应用程序几乎可以免费使用。
0.1.1 什么是PHP
PHP最初代表“个人主页”(Pemonal Home Page),由Rasmus Lerdorf于1994年创建,用于跟踪访问者对其在线履历的访问。随着其实用性和功能的发展(并且随着它开始用于更专业的环境中),它变成了“PHP:Hypertext Preprocessor(PHP超文本预处理器)”。
根据www.php.net(图0-1)上官方站点的说法,PHP是“一种HTML中嵌入的脚本语言”。这是一个复杂但具有描述性的定义,其含义将在后面解释。
称PHP是“HTML中嵌入的”意味着PHP可以散布在HTML内,这使得动态Web站点的开发要容易得多。此外,与编程语言相比,PHP是一种脚本语言:PHP用来编写Web脚本,它不是独立的应用程序。脚本只在某个事件——例如,用户提交一个表单或者输入一个URL地址发生之后才运行。
我应该在这个定义中添加一些内容,指出PHP是一种服务器端、跨平台的技术,这两个描述都是重要的。服务器端是指PHP做的所有事情都发生在服务器上(与发生在客户端上相对,客户端是Web站点浏览者所用的计算机)。它的跨平台性意味着PHP可以运行在大多数操作系统上,包括Windows、UNIX(及其许多变体)和Macintosh。更重要的是,对于在一台服务器上编写的PHP脚本,通常不用修改或者只做很少的修改即可工作在另一台服务器上。
在编写本书时,PHP已发展到了版本5(从技术上讲,是5.0.4),但其版本4.3仍然在使用并且在服务器上很常见。本书将使用PHP5(见框注),但是,如果你用的版本稍微旧一点儿,也不会有什么问题。显然,在服务器上最好是使用最新的PHP版本,但是,有时候你控制不了这些事情,本书将尽最大可能采用无版本差别的代码。在使用最新添加的函数或变量的地方,本书会给出注释来指出替代的解决方案。
0.1.2 为什么使用PHP
简单地讲,在开发动态Web站点时,与其他可选技术相比,PHP更好、更快并且更易于学习。PHP有优秀的性能,与几乎每一种可用数据库的紧密集成、稳定性、可移植性,以及由于其可扩展性而得到的几乎无限的特性集。所有这些都是免费的(PHP是开源技术),并且非常易于学习。在我接触的语言中,PHP是最佳地结合了易用性和高级能力的语言之—,初级程序员使用它很容易上手,更高级的程序员可以用它做他们需要的一切事情。
最后,一个事实可以证明这——点:PHP门从推出以来,其用户数量呈指数级增长(图0-2),并且超过ASP成为今天使用的最流行的脚本语言。它是Apache(最常用的Web服务器)必需的模块。到本书出版时,PHP运行在2 000多万个域中。
.0.1.3 PHP如何工作
如前所述,PHP是一种服务器端语言。这意味着用PHP编写的代码将驻留在称为服务器的主机上。服务器发送Web页面给发出请求的访问者(你、客户端、通过Web浏览器)。
当访问者到达用PHP编写的Web站点时,服务器读取PHP代码,然后依据其脚本指令处理它。在图0-3的示例中,PHP代码告诉服务器发送合适的数据(HTML代码)给Web浏览器,Web浏览器再把接收到的代码处理成标准HTML页面。
这不同于静态HTML站点。在静态HTML站点中,当发出请求时,服务器只是把HTML数据发送到Web浏览器,而不会由服务器端进行解释(图0-4)。对于最终用户和Web浏览器来说,home.html和home.php两者在外观上并没有明显的区别,但是,其页面内容的创建方式却有着天壤之别。
0.1.4 什么是MySQL..
MySQL(www.mysql.com,图0-5)是最流行、最佳的开源数据库(可能有些争议)。事实上,特别是在版本4和版本5添加了新的特性之后,MySQL成为那些昂贵的重量级数据库(如Oracle和Microsoft的SQL Server)有力的竞争产品。像PHP一样,MySQL提供了优秀的性能、可移植性和可靠性,并易于学习,并且几乎是免费的。
MySQL是关系数据库管理系统(DBMS),因此MySQL是一种RDBMS。简单地讲,数据库是相关数据的集合,这些数据可以是文本、数字或二进制文件,它们由DBMS进行存储和组织。
数据库有多种类型,从平面文件到关系数据库和面向对象数据库。关系数据库的特征是使用多张表存储信息。在20世纪70年代早期(当时已经出现了数据库这个概念),数据库看上去更像是具有——张单独的存储所有信息的巨型表的电子表格。而关系数据库在设计和编程阶段纳入了更多的思想,它们改进了可靠性和数据完整性,足以补偿所需的额外工作。此外,关系数据库的查找能力更强,并且允许并发操作。
通过把数据库纳入Web应用程序中,可以从MySQL提取一些PHP生成的数据。这进一步把站点的内容从静态(硬编码)基础转移到灵活基础上,灵活性是动态Web站点的关键特性。
与PHP一样,MySQL也是一种开源应用程序,这意味着它可以免费使用,甚至可以修改(源代码可下载得到)。有时应该为MySQL许可证付费,特别是在销售或结合MySQL产品来赚钱时则更应如此。查看MySQL的许可政策,可以获取关于这方面的详细信息。
MySQL软件包含多个部分,包括MySQL服务器(mysqld,它运行和管理数据库)、MySQL客户(mysql,它提供了一个到达服务器的接口),以及出于维护等目的而提供的大量实用程序。PHP始终具有对MySQL的良好支持,在该语言最新的版本中,这——点表现得更为突出。
MySQL以处理大型数据库而著称,数据库可以包含60000张表,以及超过50亿行的记录。在某些操作系统上,MySQL可以与容量高达800万TB的表协同工作,在其他操作系统上,一般可以良好地处理4GB的数据。
在编写本书时,MySQL已经推出了版本4.1.12,并且版本5正在开发中。因为不同的MySQL版本有不同的特性(参见框注),所以要清楚地知道你自己正在使用什么就非常重要了。本书使用的是MySQL 4.1,在使用特定于某些版本的特性时,会在文字中加入注释。
0.2 你需要什么
要理解本书的示例,你需要以下工具:
□Web服务器应用程序(例如,Apache、Xitami或IIS)
□PHP
□MySQL
□Web浏览器(Microsoft的Internet Explorer、Mozilla的Firefox、Apple的Safari等)
□文本编辑器、支持PHP的所见即所得应用程序(Macromedia的Dreamweaver就具有这种能力)或者IDE(集成开发环境)
□FTP应用程序(如果使用远程服务器)
利用PHP和MySQL开发动态Web站点的重大优点之一是,无论什么要求都可以免费得到满足,而不管使用的操作系统是什么!Apache、PHP和MySQL全都是免费的:大多数Web浏览器可以免费拥有(除了OmniWeb、Opera以及另外几种浏览器之外):许多优秀的文本编辑器可供免费使用。
附录A讨论了在Windows和Mac OS X操作系统上的安装过程。如果有—台计算机,则只需下载两个产品,即可创建动态Web站点(在这种情况下,你的计算机同时代表图0-3和图0-6中的客户和服务器)。与之相反,你可以以每月几美元的价钱购买Web主机托管服务,它会提供支持PHP和MySQL的已经在线的环境(到处都有免费的PHP和MySQL主机托管服务公司,但是它们通常离期望值相去甚远)。
0.3 关于本书
本书讲述了如何利用PHP和MySQL宋开发动态Web站点,涵盖了大多数开发人员可能需要的知识。书中使用逐步引导的方法并配以相应的图片来讨论。其重点依然放在现实且实用的示例上,避免了“这些事情你能够做到但是永远也不会去做”的情况。我自己作为一名Web开发人员,编写了我会使用的信息,并且避免了那些对手边的任务来说无关紧要的东西。
本书采用了线性结构。前3章介绍了PHP的基础知识(通过学习第2章,你就会开发你的第一个动态Web页面)。第4章和第5章介绍了SQL(结构化查询语言(Structured Query Language),用于和所有数据库进行交互)和MySQL。这两章介绍了SQL和数据库设计的基础知识,并且特别介绍了MySQL应用程序。第6章介绍了调试和错误管理,第7章专门介绍了如何同时使用PHP和MySQL,这非常容易做到。
第8~10章讲述了更多的应用技术,可以充实你的知识。第11章将说明一些扩展的主题,这些主题值得考虑,但并不是所有应用程序都需要它们。最后,本书包含了专门介绍示例的3章内容,其中开发了不同Web应用程序的核心以及一些指导说明。附录讨论了安装过程,并且提供了关于参考资料和资源的更多信息。
0.3.1 本书读者对象
本书读者面很广,从初学者到中级用户都可以学习本书。考虑将来的兼容性问题,本书使用了XHTML,因此读者必须具有使用XHTML或其前身HTML的丰富经验。尽管本书涵盖了很多方面,但它没有正式讲述HTML或Web页面设计。
其次,本书希望读者具有以下素质之—:
□学习的动力和能力,而刁;要被人牵着鼻子走;
□熟悉另一种编程语言(甚至具有丰富的JavaScript技术也是合适的);
□对PHP有一定的了解。
本书涵盖了PHP和MySQL方方面面的内容,讲述了开发现实的Web站点需要知道的一切知识,不过,要特别指出的是,开头几章以较快的速度介绍了PHP。出于这种原闲,我建议在开始学习新内容时,最好具备一些编程经验或者好奇和独立的精神。如果你发现有些内容讲得人快,那么从学习我的PHP for the World Wide Web:Visual QuickStart Guide的最新版本开始起步可能更好,其中的行文速度更适中。
学习本书不需要任何数据库经验,因为本书是从最基本的级别开始讨论SQL和MySQL的。
0.3.2 这一版本的新增内容
本书的第一版非常受欢迎,我收到了许多关寸:本书的肯定的反馈意见(感谢!)。在编写此新版本时,我希望不仅仅是更新PHP和MySQL的最新版本的内容,尽管这是全书的首要考虑事项。你将会发现其他新特性:
□扩展的和更新的安装和配置指导;
□许多新的高级MySQL和SQL示例;
□用一整章的篇幅专门介绍错误管理和调试;
□用新的示例演示读者频繁要求了解的技术;
□更广泛的扩展主题。
对于也拥有第一版的读者(感谢!),我相信这些新特性也会使这—版本成为你的案头必备。
0.3.3 与我的其他图书的比较
这是我的第四本关于PHP和/或MySQL主题的图书,下面按顺序列出之前出版的另外3本书:
□PHP for the World Wide Web:Visual QuickStart Guide
□PHP Advanced for the World Wide Web:Visual QuickPro Guide
□MySQL:Visual QuickStart Guide
我希望这份履历暗示了我具有某种资格来编写本书,但是,作为读者的你如何决定哪本书适合你自己?当然,我非常欢迎你慷慨地购买全套书,对你的这种做法,我会致以无尽的谢意,但是,如果你不得不从中选择一本书……
首先,阅读0.3.1节的内容,并看看其中的要求是否适合你自己。如果你根本没有任何编程经验,并且更希望得到更细致的引导,那么我的第一本书可能更适合你。如果你已经对使用PHP感到得心应手,并且想学习它的更多高级功能,可选择第二本书。如果你最感兴趣的是MySQL,并且不怎么热衷于学习关于PHP的大量知识,则可购买第三本书(它用单独一章来介绍MySQL和PHP)。
如前所述,如果你想学习今天利用PHP和MySQL开始开发动态Web站点所需要知道的一切知识,那么本书就适合你!它参考了这两种技术的最新版本,使用了其他图书中以前未讨论的技术,并且包含了它自己独特的示例。
0.4 丰目关Web立占点
我专门为本书开发了一个Web站点www.DMCinsights.com/phpmysq12(图0-7)。在这里,你将找到本书中的每一个脚本、包含冗长的SQL命令的文本文件,以及勘误表(如果你有关于命令或脚本方面的问题,并且正好在学习本书,请检查勘误表以确保没有印刷错误)。在该Web站点上,你还会发现有用的Web链接以及一个非常受欢迎的论坛,读者可以在里面相互问问题并解答它们(我自己解答了其中许多问题),等等。
问题、评论或建议
如果你有关于PHP或MySQL的任何问题,应该求助于现有的许多Web站点、邮件列表、新闻组和FAQ仓库之一。附录C列出了上述选项中最受欢迎的资源。如果你需要得到即时解答,这些资源或快速Web搜索无疑会满足你的需要(十有八九已经有人遇到并解决了你的问题)。
你也可以直接把你的问题、评论和建议通过电子邮件发送给我,我的电子邮件地址是:phpmysq12@DMCinsights.com。我会尽力答复收到的每一封电子邮件,尽管我不能保证会迅速给出回复。我会优先答复与本书内容直接相关的电子邮件,并给出更详细的答复;对于其他问题,最好通过邮件列表或者本书的在线读者论坛来获得更即时、更详致的回复。...