欢迎阅读《PHP 5.3入门经典》一书。本书将向读者介绍如何用PHP语言建立交互的Web站点和应用程序。PHP是当前最受欢迎的Web编程语言之一。有了PHP,我们几乎无所不能,从创建简单的输入Email地址的表单,到复杂的Web论坛应用程序、博客平台、内容管理系统或令人激动的下一代Web 2.0。PHP的发展前景无可限量! 作为编程语言,PHP易学。但它又是一门可扩展的语言。PHP提供了数以百计的内置函数,并且通过PHP引擎的增件,提供了数量更多的数以千计的函数。本书不打算全方位介绍PHP编程语言,而只是把这个语言的最重要部分介绍给读者,即那些100次当中99次要用到的东西。本书将指导读者创建可靠的、高质量的PHP应用程序。 本书读者对象 本书是专为PHP编程的初学者而编写的。如果读者以前曾使用过另一种编程语言,如Java、C#或Perl,则能很容易地理解前面几章的内容。但是本书假定读者不拥有编程或编写Web应用程序的经验。 由于PHP主要是一种Web技术,因此如果对其他Web技术(特别是HTML和CSS)有一定程度的了解,将会对学习PHP大有帮助。幸运的是,这两种技术不难掌握。在以下网页中,可以找到许多有用的HTML和CSS教程: 提供了HTML、XHTML和CSS教程(其中许多是由本书作者编写的)。 ●向读者介绍了HTML基础知识,并提供了大量的“试一试”实例。 ●向读者提供了最新的CSS(层级样式表)。 许多Web应用程序利用数据库来存储数据,本书将会用三章篇幅讨论MySQL数据库。同样,如果读者已经对数据库较为熟悉,特别是对MySQL比较熟悉,则可以跳过这三章。但是,即使读者以前从未接触过数据库,在读完这三章之后也应该能够掌握并运用数据库的知识。 本书主要内容 本书广泛介绍了PHP语言以及相关的技术。包括以下内容: ●如何安装和配置PHP引擎。 ●PHP语言基础知识,如变量、循环、字符串和数组。 ●函数及模块化代码的概念。 ●如何开发面向对象的应用程序。 ●如何创建Web表单,如何使用PHP脚本处理表单。 ●如何使用浏览器cookie,如何通过创建会话来存储用户数据。 ●文件和目录的处理。 ●编写数据库驱动的应用程序。 ●处理日期和时间、Web服务器环境和电子邮件。 ●使用PHP创建图形。 ●正则表达式的全面介绍。 ●如何使用PHP读取、写入和创建XML文档。 ●良好的编程习惯,包含编码标准、文档、安全问题、错误处理、代码分离和代码测试。 ●如何编写可以在命令行运行的PHP脚本。 此外,正如读者想象的,本书还介绍了PHP 5.3新增的功能。但是,即使读者还在使用PHP的旧版本,也不必惊慌,因为本书的绝大部分内容适用于所有PHP版本。 本书的组织 本书的各个章节的内容是按照逻辑结构进行组织的。首先讨论编程的基本概念,然后在此基础上讨论比较高级的主题。一般而言,每章的知识会建立在前几章的基础之上,因此读者要按顺序阅读本书。但如果读者对PHP的某些基本概念已经非常熟悉,则可以只关注某些主题,这样在后面的章节中更容易深入学习。 每章的末尾都有习题,用来测试读者在本章掌握的知识,同时也可以扩展本章学习的内容。在本书后面的附录A中可以找到习题的答案。 本书分三部分。第Ⅰ部分“PHP的安装与运行”,比较详细地介绍了PHP语言的安装与运行,介绍了如何安装PHP,如何编写一个简单的PHP脚本。第Ⅱ部分“PHP语言基础”,向读者介绍了PHP语言的基本内容,这是建立PHP脚本不可或缺的部分。第Ⅲ部分 “PHP的实际应用”,向读者介绍了如何创建实际的PHP应用程序,其中包含了很多概念,也包含了很多有用的实例。 下面将逐章介绍本书的内容,这有助于读者决定采用什么样的阅读方法。 第1章为读者引入PHP语言。这一章将PHP语言与其他编程语言进行比较,讨论PHP语言的演变过程,并且介绍PHP 5.3的新增内容。 第2章介绍如何在Ubuntu Linux、Windows、Mac OS X等系统上安装PHP,以及PHP的其他一些安装和使用方法。此外,本章还向读者介绍如何编写一个简单的PHP脚本。 第3章介绍PHP语言的几个基本概念,包括变量、数据类型、运算符、表达式和常量等概念。 第4章介绍如何通过判断语句和循环语句改变脚本的流程。主要介绍了if、else和switch选择语句的用法,三目运算符,以及do、while、for、break和continue等语句的用法。此外还介绍了循环嵌套、如何在HTML块中插入判断和循环语句。 第5章讨论了PHP的字符串处理。主要介绍了如何创建字符串,如何从字符串读取字符,以及如何使用strlen()、substr()、strstr()、strpos()、str_replace()和printf()等函数处理字符串。 第6章讨论了数组。数组是可以保存多个值的变量,还介绍了索引数组与关联数组之间的区别,以及如何建立数组,如何访问数组的每个元素。本章的其余部分介绍了针对数组的操作,包括print_r()、array_slice()、count()、sort()、array_merge()和list()。此外本章还介绍了如何使用foreach循环以及多维数组。 第7章介绍了函数的基本概念。函数就是可以反复使用的代码段。本章介绍了如何调用内置函数、如何使用变量函数以及如何建立自定义函数,其中包括参数的定义、返回值、作用域和匿名函数。此外,还介绍了其他与函数有关的内容,如引用和递归函数。 第8章讨论了面向对象程序设计方法。讨论了面向对象程序设计方法的优点,以及如何创建类、属性和方法,如何创建对象和使用对象。此外还介绍了重载、继承、接口、构造函数、析构函数、自动加载和名称空间等高级主题。 第9章介绍了如何使用PHP建立交互式Web表单。具体内容包括如何建立HTML表单,如何在PHP脚本中捕获表单数据,如何用PHP生成动态表单。此外,还介绍了文件上传表单和页面重定向。 第10章讨论了如何在页面视图切换时保存页面的状态。主要介绍三种不同的保存方法:查询字符串、cookie和PHP会话。本章还介绍了一个用户登录系统的示例。 第11章讨论了PHP的文件和目录处理函数。主要内容包括如何打开和关闭文件,如何找到一个文件的更多信息,如何读写文件,如何使用文件权限,如何复制、重命名、删除文件,如何操作目录。本章还提供了一个简单的文本编辑器示例。 第12~14章讨论数据库的一般理论,并专门介绍了MySQL,以及如何在PHP脚本中使用MySQL数据库。此外,还介绍了如何从PHP脚本中连接MySQL,讨论了如何读取、插入、更新和删除MySQL数据库中的数据。 第15章介绍了PEAR,即PHP扩展和应用程序库。它是一个大型的可重用的代码库。PEAR库可以大大加速我们的开发进程。本章介绍了如何安装和使用PEAR程序包,并且还介绍了三个实用的程序包:Net_UserAgent_Detect、HTML_Table和HTML_QuickForm。 第16章介绍了PHP应用程序与其他应用程序的各种交互方法。本章详细介绍了日期和时间处理,包括许多实用的内置日期函数,以及DateTime和Datetimezone类。此外还介绍了如何处理HTTP请求头和响应头,如何读取Web服务器信息,如何在脚本中发送Email等。 第17章介绍了如何使用PHP动态生成图形。本章讨论了计算机图形的一些理论,然后介绍了如何创建新的图像,如何修改现有的图像。同时还介绍了颜色、绘制函数、图像格式、透明度和不透明度,以及在图像中生成文本等概念。 第18章讨论了正则表达式的强大功能。这种智能的匹配工具可以在字符串中搜索某个特定文本模式。本章介绍了正则表达式语法以及如何用PHP正则表达式函数搜索和替换文本模式。为了清楚地说明本章的一些重要概念,在讨论过程中使用了很多示例。 第19章讨论了XML--可扩展标记语言(extensible Markup language)。向读者介绍了如何在PHP脚本中处理XML文档,包括XML Parser程序包、XML DOM扩展模块和SimpleXML程序包。此外还简单介绍了XML样式表,包括XSL和XSLT。 第20章是本书的最后一章。这一章讨论了良好的编程习惯。分析了编写模块化代码的各种方法,并且介绍了如何实现一致性的编码标准,如何给代码添加文档,如何加强应用程序的安全防止外部的攻击,如何处理错误,应用逻辑与表示逻辑分离的重要性以及应用程序测试的各种方法。 附录A提供了本书全部习题的答案。 附录B介绍了如何配置PHP语言,并且列出了全部配置指令。 附录C介绍了PHP所支持的可以取代MySQL的其他数据库。 附录D介绍了为了进一步提高应用程序的功能和灵活性,如何使用PHP编写命令行脚本。 使用本书的准备工作 为了测试本书的示例,最好安装或能够访问一个运行PHP的Web服务器。由于PHP可以在Windows、Linux和Mac OS X等绝大多数操作系统上运行,因此读者在自己的计算机上安装一个使用PHP引擎的Web服务器不会遇到任何困难。第2章详细介绍了在Windows、Linux和Mac计算机上安装PHP和Apache Web服务器的步骤。另外,读者也可以使用一个远程的Web服务器-- 例如,在Web宿主服务的提供商上-- 运行本书中的实例脚本。 虽然本书讨论的是PHP 5.3版本,但在本书编写时,实际使用的仍然是5.2版本。因此本书的某些章节,特别是第2章,大部分是引用了5.2版本中的内容。然而,只要读者安装的是5.1以后的版本,不管是5.2,5.3或后续版本,运行本书的脚本都不会有任何问题。 为了创建和编辑PHP脚本,读者需要一个文本编辑器,目前有不少免费的文本编辑器。如Windows内置的记事本,它适合用于建立小型项目。在Mac计算机上,读者可以使用TextEdit或者vi或Emacs等命令行编辑器。同样,在Linux计算机上,读者也可以使用vi、Emacs或其他的命令行编辑器,或者安装一个图形化的文本编辑器,如专为Linux提供的Bluefish。 使用命令行 本书的某些内容,特别是讨论数据库的章节,以及附录D都要用到命令行界面或shell来输入命令和执行程序。命令行是一个可以与系统进行通信的强大工具。 在功能丰富的图形环境普遍使用之前,它是唯一向计算机输入命令的交互方法。在命令行下并没有可以单击的图标,因此要运行程序,只能输入程序名。 许多程序仍然在使用命令行界面。理由是,一方面,这样的程序更容易编写,更重要的是,许多人仍然认为,通过命令提示模式而不是鼠标驱动的窗口式环境更容易与计算机交互。 为了访问命令行,需要执行以下操作之一: ●在Windows系统中,从Start菜单,选择All Programs | Accessories | Command Prompt。或者同时按下Windows+R组合键,出现一个Run对话框,在该对话框中输入cmd,并单击OK按钮。 ●在Ubuntu Linux系统中,选择Applications | Accessories | Terminal(在其他Linux发行版本或UNIX的其他版本中,查找console、terminal、konsole、xterm、eterm或kterm等程序,这些都是常用的shell程序,普遍存在于很多基于UNIX的系统中)。 ●在Mac OS X系统中,在Finder文件夹中双击Applications | Utilities | Terminal应用程序。 打开命令行界面后,会出现一个几乎全黑的窗口,窗口里会出现以下内容之一: $ % C:/> # bash$ 这就是命令行提示符或shell提示符,它的作用就是让你知道现在这个界面正准备接收你输入的命令,实际上就是提示你输入命令。到底使用哪个提示符并不重要,重要的是你必须知道它出现了没有。本书将统一使用以下提示符: $ 本书中凡是需要在命令行运行的命令,前面都有一个提示符($)。计算机生成的输出结果如下: $ ./hello.php Hello, world! $ 有时会显示另一个提示符。例如,当我们使用MySQL命令行程序时,则会看到如下提示符: mysql> 源代码 读者在阅读本书提供的代码时既可以亲自键入所有代码,也可以使用随书提供的代码文件。本书所有代码均可以从网站下载。进入该网站后,请读者根据本书的书名查找本书(读者既可以使用搜索框进行查找,也可以使用书名列表进行查找),然后单击本书详细内容页面上提供的Download Code链接,就可以下载本书提供的所有代码。 注意: 因为许多书籍名称与本书类似,因此读者也可以通过ISBN进行查找,本书的ISBN为:978-0-470-41396-8。 下载代码后,读者可以利用一种压缩工具将代码解压。此外,读者还可以通过访问网站/dynamic/books/download.aspx中提供的Wrox代码下载页面来获取本书提供的代码,也可以下载Wrox出版的其他书籍提供的代码。 勘误表 为了避免本书文字和代码中存在错误,我们已经竭尽全力。然而,就如世界上不存在完美无缺的事物,本书仍然可能存在错误。如果读者在我们编写的书籍中发现了诸如拼写错误或代码缺陷等问题,那么请告诉我们,我们对此表示感谢。利用勘误表反馈错误信息,可以为其他读者节省大量时间,同时,我们也能够受益于读者的帮助,这样有助于我们编写出质量更高的专业著作。 如果读者需要参考本书的勘误表,请在网站中用搜索框或书名列表查找本书书名。然后,在本书的详细内容页面上,单击Book Errata链接。在随后显示的页面中,读者可以看到与本书相关的所有勘误信息,这些信息是由读者提交、并由Wrox的编辑们加上的。通过访问/misc-pages/booklist.shtml,读者还可以看到Wrox出版的所有书籍的勘误表。 如果读者没有在Book Errata页面上找到其发现的错误,那么请读者转到页面/contact/techsupport.shtml,针对您所发现的每一项错误填写表格,并将表格发给我们,我们将对表格内容进行认真审查,如果确实是我们书中的错误,那么我们将在该书的Book Errata页面上标明该错误信息,并在该书的后续版本中改正相关错误。 关于 如果读者希望能够与作者进行讨论,或希望能够参与读者的共同讨论,那么请加入的论坛。这个论坛是一个基于Web的系统,读者可以在论坛发表与Wrox出版的书籍有关的技术信息,并与其他读者和技术用户进行讨论。论坛提供了订阅功能,可以将与读者所选主题相关的新帖子定期发送到读者的电子邮箱。Wrox的作者、编辑、业界专家以及其他读者都会参与论坛中的讨论。 读者可以在参与多个论坛的讨论,这些论坛不仅能够帮助读者更好地理解本书,还有助于读者更好地开发应用程序。如果读者希望加入论坛,那么请读者按照以下步骤执行: (1)进入页面,单击Register链接。 (2) 阅读使用条款,然后单击Agree。 (3)填写必要的信息(必要时也需要填写可选信息),然后单击Submit。 (4)随后读者会收到一封电子邮件,邮件中说明了如何验证帐号并完成整个加入过程。 注意: 要阅读论坛信息,读者无须加入P2P。但是如果读者需要发表主题或发表回复,那么读者必须加入论坛。 成功加入论坛后,读者就可以发表新主题了。此外,读者还可以回复其他主题。读者在任何时间都可以阅读论坛信息。如果读者需要论坛将新的信息发送到自己的电子邮箱,那么可以单击论坛列表中论坛名称旁的Subscribe to this Forum图标完成该功能设置。 如果读者需要获得更多与Wrox P2P相关的信息,请阅读P2P FAQs,这样可以获得大量与P2P和Wrox出版的书籍相关的具体信息。阅读FAQs时,请单击P2P 页面上的FAQs链接。