PHP和MySQL Web开发

avatar
作者
筋斗云
阅读量:40

PHP和MySQL Web开发(原书第4版)【入门级神作,享誉全球的开发圣经】

欢迎来到PHP和MySQL Web开发的世界。在本书中,你将学习我们在使用PHP和MySQL中得到的经验精华。同时,PHP和MySQL也是目前最热门的两个Web开发工具。

在前言中,我们将介绍:

■ 为什么要学习本书

■ 使用本书将学习到哪些知识

■ PHP和MySQL都是什么及其伟大之处

■ PHP和MySQL最新版本的变化

■ 本书的组织结构

为什么要学习本书本书将介绍如何创建可交互的Web站点,包括从最简单的订单表单到复杂的安全电子商务站点,甚至是交互式的Web 2.0网站。而且,读者还将了解如何使用开源技术来实现它。

本书的目标读者群是已经了解了HTML基础知识,并且以前曾经使用过一些现代编程语言进行过程序开发的读者。但是这并不要求读者从事过Internet 编程或者使用过关系数据库。如果你是入门级程序员,你将发现本书还是非常有用的,但是你可能会需要更长的时间来吸收和消化它。我们尽量做到不遗漏任何基本 概念,但是我们在介绍这些基本概念的时候都比较简略。本书的典型读者是希望掌握PHP和MySQL并致力于创建大型或电子商务类型Web站点的人。有些读 者可能已经使用过另一种Web开发语言,如果是这样的话,就更容易掌握本书的内容。

我们编写本书第1版的原因在于,我们已经厌倦了寻找那些 充其量只是基本的PHP函数参考的图书。那些图书是有用的,但是当你的老板或客户说“赶快给我编写一个购物车”时,那些图书无法帮助你。我们尽量使本书中 的每一个例子都有实用价值。许多示例代码可以在Web站点上直接使用,而大多数代码只要稍微经过修改就可以直接使用。

使用本书将学习到哪些知识 学习了本书以后,读者将能够创建实用的动态Web站点。如果读者已经使用普通的HTML创建Web站点,将意识到这种方法的局限性。一个纯HTML网站 的静态内容就只能是静态的。除非专门对其进行了更新,否则其内容将不会发生变化。用户也无法以任何形式与站点进行交互。

使用一种编程语言(例如,PHP)和数据库(例如,MySQL),可以创建动态的站点:你可以自定义站点并且在站点中包含实时信息。

在本书中,我们花费了大量的精力来介绍实用的应用程序。我们从一个简单的在线订购系统开始,然后介绍PHP和MySQL的不同部分。

我们将讨论与创建一个实用Web站点相关的电子商务和安全性方面的问题,并且介绍如何使用PHP和MySQL来实现这些方面。

在本书的最后部分,我们将介绍如何实现实际项目,并且和读者一起设计、计划并且构建如下项目:

■ 用户身份验证和个性化设置

■ 购物车

■ 基于Web的电子邮件

■ 邮件列表管理器

■ Web论坛

■ PDF文档的生成

■ 使用XML和SOAP连接Web服务

■ 使用Ajax构建Web 2.0应用程序

这些项目都是可以直接使用的,或者可以经过一定的修改来满足读者的实际需要。我们选择这些项目是因为我们相信这8个项目是程序员创建基于Web应用程序时最常见的项目。如果读者的需要有所不同,本书也可以帮助读者实现目标。

什么是PHPPHP是一种服务器端脚本语言,它是专门为Web而设计的。在一个HTML页面中,你可以嵌入PHP代码,这些代码在每次页面被访问时执行。PHP代码将在Web服务器中被解释并且生成HTML或访问者看到的其他输出。

PHP是1994年出现的,最初只是Rasmus Lerdorf一个人的工作成果。其他一些天才改进了这种语言,它经历了4次非常重要的重新编写,才变成了我们今天所看到的广为使用的、成熟的PHP。到 2007年11月,PHP已经在全球的2100多万个网站域中安装,而且该数字还在不断地快速增长。访问 /usage.php站点,你可以获得当前的确切数据。

PHP是一个开放源代码的产品,这就意味着,你可以访问其源代码,也可以免费使用、修改并且再次发布。

PHP最初只是Personal Home Page(个人主页)的缩写,但是后来经过修改,采用了GNU命名惯例(GNU = Gnu誷 Not UNIX),如今它是PHP超文本预处理程序的缩写。

目前,PHP的主要版本是第5版。该版本的Zend引擎经过了完全的重写,而且还实现了一些主要的语言改进。

PHP的主页是:。

Zend Technologies的主页是:。

MySQL是什么MySQL是一个快速而又健壮的关系数据库管理系统(RDBMS)。

一个数据库将允许你高效地存储、搜索、排序和检索数据。MySQL服务器将控制对数据的访问,从而确保多个用户可以并发地使用它,同时提供了快速访问并 且确保只有通过验证的用户才能获得数据访问。因此,MySQL是一个多用户、多线程的服务器。它使用了结构化查询语言(SQL),这是全球通用的标准数据 库查询语言。MySQL是在1996年公布的,但是其开发历史可以追溯到1979年。它是世界上最受欢迎的开源数据库,已经多次获得《Linux Journal》杂志的读者选择奖。

MySQL可以通过一个双许可模式获得。我们可以在开源许可(GPL)下使用它,条件是你需要满足该协议的一些条款。如果希望发布一个包括MySQL的非GPL应用程序,可以购买一个商业许可。

为什么要使用PHP和MySQL当我们准备创建一个站点时,可以选择使用许多不同的产品。

你必须选择如下:

■ Web服务器所需的硬件

■ 操作系统

■ Web服务器软件

■ 数据库管理系统

■ 编程语言或脚本语言

这些产品的选择具有相互的依赖性。例如,并不是所有操作系统都可以在所有硬件上运行,并不是所有Web服务器都支持所有编程语言。

本书中,我们没有也不需要更多地关注硬件、操作系统、Web服务器软件。其中一个最主要的原因是PHP和MySQL能在所有主流操作系统和许多非主流系统中运行。

大部分PHP代码可以在操作系统和Web服务器之间导入/导出。某些PHP函数是与操作系统的文件系统相关,但是在本书中,我们尽量标识出这些函数。

无论选择何种硬件、操作系统和Web服务器,我们相信你会认真考虑使用PHP和MySQL。

PHP的一些优点PHP的主要竞争对手是Perl、Microsoft ASP.NET、Ruby(on Rails或其他)、JavaServer Pages(JSP)和ColdFusion。

与这些产品比较,PHP具有很多优点,如下所示:

■ 高性能

■ 可扩展性

■ 与许多不同数据库系统的接口

■ 内置许多常见Web任务所需的函数库

■ 低成本

■ 容易学习和使用

■ 对面向对象的高度支持

■ 可移植性

■ 开发方法的灵活性

■ 源代码可供使用

■ 技术支持和文档可供使用

接下来我们将详细介绍这些优点。

性能

PHP的速度非常快。使用一个单独的廉价的服务器,就可以满足每天几百万的点击。

Zend Technologies()公司发布的评测表明PHP的性能要优于其竞争产品。

扩展性

PHP具有Rasmus Lerdorf经常提到的“shared-nothing”架构。这就意味着,你可以有效并廉价地对大量服务器进行水平方向扩展。

数据库集成

对于许多数据库系统来说,PHP都具有针对它们的内置连接。除了MySQL之外,你可以直接连接到PostgreSQL、mSQL、Oracle、 dbm、FilePro、Hyperwave、Informix、InterBase和Sybase数据库。PHP 5还提供了针对普通文件(平面文件)的内置SQL接口,名为SQLite。

使用开放式数据库连接标准(ODBC),可以连接到任何提供了ODBC驱动程序的数据库。

这包括Microsoft产品和许多其他产品。

除了本机函数库,PHP还提供了数据库访问抽象层,名为PHP数据库对象(PDO),它提供了对数据的一致性访问,并且倡导了安全的编码实践。

内置的函数库

由于PHP是为Web开发而设计的,它提供了许多内置函数用来执行有用的Web任务。

它可以生成一个图像、连接到Web服务和其他网络服务、解析XML、发送电子邮件、使用cookie以及生成PDF文档,所有这些任务只需要非常少的几行代码。

成本

PHP是免费的,用户可以在任何时候从站点免费下载最新版本。

容易学习PHP

PHP的语法是基于其他编程语言的,主要是C和Perl。如果读者已经了解了C或Perl,或者其他类似C的语言,例如C++或Java,那么几乎立即就可以高效地使用PHP。

对面向对象的支持

PHP版本5具有设计良好的面向对象特性。如果读者学习了使用Java或C++进行编程,将发现所期望的一些特性(和常见语法),例如继承、私有和受保 护的属性和方法、抽象类和方法、接口、构造函数和析构函数。读者还将发现一些不常见的特性,例如迭代器。该功能的一部分可以在PHP版本3和版本4中获 得,但是版本5中具有更全面的面向对象支持功能。

可移植性

PHP在许多不同的操作系统中都可以使用。我们可以在类似于UNIX的 免费操作系统中(例如FreeBSD和Linux)编写PHP代码,也可以在商业性的UNIX版本(例如Solaris和IRIX,Mac OS X)或者在Microsoft Windows的不同版本中编写代码。

通常,代码不经过任何修改就可以在运行PHP的不同系统中运行。

开发方法的灵活性

PHP允许实现简单的任务,同样,也很容易应用到大型应用程序的实现,例如使用基于设计模式的框架(例如,模型-视图-控制器,MVC)。

源代码

我们可以访问PHP的所有源代码,与商业性的封闭式源代码产品不同,如果要在该语言中进行修改或者添加新特性,可以免费进行。

我们无须等待开发商来发布补丁,也不需要担心开发商倒闭或者决定停止对一个产品的支持。

可供使用的技术支持和文档

Zend Technologies()公司,实现PHP的后台引擎公司,通过提供商业性技术支持和相关的软件为PHP开发提供支持。

PHP文档和社区都非常成熟,有大量的共享信息资源。

PHP 5.0的新特性

最近,读者可以从PHP 4.x版本转移到PHP 5.0版本。正如读者期望的那样,在一个新的主要版本中,它做出了一些重要变更。在这个版本中,PHP后台的Zend引擎经过了完全的重写。主要的新特性如下:

■ 通过一个完整的新的对象模型提供了更好的面向对象支持(请参阅第6章)。

■ 可扩展和可维护的错误处理—异常(请参阅第7章)。

■ XML数据的简单处理—SimpleXML(请参阅第33章)。

其他变化还包括在PHP的默认安装中去除了一些扩展,并且将这些扩展放入PECL库中,改进了对流的支持以及添加了SQLite。

本书在编写时,PHP 5.2是当前最新版本,而5.3也将要发布。PHP 5.2添加了大量有用的特性,如下所示:

■ 新的输入过滤扩展,适用于安全性问题

■ JSON扩展,更好的Javascript交互

■ 文件上传进度跟踪

■ 更好的日期和时间处理

■ 客户端函数库的大量更新,性能改进(包括Zend引擎中,更好的内存管理)和Bug修复

PHP 5.3的关键特性

你可能听说了PHP最新的主要发布版本PHP 6。在本书编写时,PHP 6还未发布,一些主机服务提供商还不会安装它。但是,PHP 6中的一些关键特性可以追溯到PHP 5.3版本,事实上,5.3是一个小版本的发布,基本上通过了可接受性测试,因此一些主机服务提供商安装了它(当然,如果你是主机管理员,可以安装任何喜 欢的版本)。

PHP 5.3中的一些新特性如下所示(相关特性的介绍也会在本书的适当章节给出):

■ 名称空间的增加。更多信息,请参阅。

■ intl扩展的增加,它为应用程序的国际化提供帮助,更多信息,请参阅 net/manual/en/intro.intl.php。

■ phar扩展的增加,它应用于创建自包含PHP应用包。更多信息,请参阅 net/book.phar。

■ fileinfo扩展的增加,它应用于文件处理的改进。更多信息,请参阅 net/manual/en/book.fileinfo.php。

■ sqlite3扩展的增加,它应用于SQLite嵌入式SQL数据库引擎。更多信息,请参阅。

■ 支持MySQLnd驱动程序,替代了libmysql;更多信息,请参阅 wiki/PHP_MYSQLND。

虽然以上包含了PHP 5.3版本的重要特性,但是该版本还包括了大量Bug修复以及对已有功能的改进,例如:

■ 删除了对早于Windows 2000的Windows操作系统的支持(例如,Windows 98和NT 4)。

■ 确保PCRE、 Reflection和 SPL扩展的启用。

■ 增加一些日期和时间函数,更方便于日期计算和处理。

■ 改进了crypt()、hash()和md5()函数的功能以及OpenSSL扩展。

■ 改进了php.ini管理和处理,包括更好的错误报告。

■ 继续对Zend引擎进行调优,实现更好的PHP运行时速度和内存的使用。

MySQL的一些优点MySQL的主要竞争产品包括PostgreSQL、Microsoft SQL Server和Oracle。MySQL具有许多优点,如高性能、低成本、易于配置和学习、可移植性、源代码可供使用、技术支持可供使用等,接下来,我们将详细介绍这些优点。

性能

不可否认,MySQL的速度是非常快的。在站点,你可以找到许多开发人员的评 测页面。这些评测结果表明MySQL的运行速度比其竞争产品要快很多。在2002年,《eWeek》杂志发布了一个关于实现Web应用程序的5个数据库的 评测结果。最佳结果是MySQL和成本昂贵得多的Oracle。

低成本

在开放源代码许可下,MySQL是免费的,而在商业许可下,MySQL也只需要很少的费用。

如果读者希望将MySQL作为应用程序的一部分重新发布,并且不希望在开放源代码许可下授权应用程序,那么必须获得一个商业许可。如果读者并不打算发布应用程序(适用于大多数Web应用程序)或者只开发免费软件,那么就不需要购买许可。

便于使用

大多数现代数据库都使用SQL。如果读者曾经使用过其他RDBMS,就会很容易使用MySQL。MySQL的安装也比其他类似产品的安装要简单。

可移植性

MySQL可以在许多不同的UNIX系统中使用,同时也可以在Microsoft的Windows系统中使用。

源代码

和PHP一样,读者可以获得并修改MySQL的源代码。对大多数用户来说,在大多数情况下这一点并不重要,但是它消除了后顾之忧,可以确保未来的持续性,并且提供了紧急情况下的选择。

技术支持可供使用

并不是所有开放源代码产品都有一家母公司,来提供技术支持、培训、顾问和认证,但是读者可以从MySQL AB获得所有这些服务()。

MySQL 5.0的新特性

MySQL 5.0版本新引入的主要变化包括:

■ 视图

■ 存储过程(请参阅第13章)

■ 基本触发器的支持

■ 对游标的支持

其他变化还包括多个ANSI标准的兼容以及速度的改进。如果读者还是使用MySQL服务器的早期4.x版本或3.x版本,应该知道如下特性已经陆续加入到了4.0以后的版本:

■ 对子查询的支持

■ 用于存储地理数据的GIS类型

■ 对国际化的改进支持

■ 作为标准,引入了InnoDB这个事务安全的存储引擎

■ MySQL查询缓存,极大提高了Web应用程序通常会执行的重复查询速度

本书所使用的示例是基于MySQL 5.1(Beta Community版本)。这个版本还添加了如下支持:

■ 分区

■ 基于行的复制

■ 事件调度

■ 将日志保存于表

■ MySQL群集、信息模式、备份过程的改进以及大量的Bug修复

本书的组织结构本书分为5个部分(除此之外,还有“附录”):

第一篇“使用PHP”,通过一些示例概述了PHP语言的主要部分。每一个例子都是在构建实际电子商务站点时可能用到的例子。在第一篇中,第1章是 “PHP快速入门教程”。如果读者已经使用过PHP,可以跳过这一章。如果读者是第一次使用PHP或者是入门程序员,那么可能需要花一些时间在这一章上。 如果读者非常熟悉PHP,但却不是很了解PHP 5,可能会希望阅读第6章,因为在PHP 5中,面向对象功能有了非常明显的变化。

第二篇“使用MySQL”,将介绍一些概念和设计,包括使用关系型数据库系统(例如MySQL)、使用SQL、使用PHP连接MySQL数据库以及MySQL的高级技术(例如,安全性和优化)的使用。

第三篇“电子商务与安全性”,介绍了使用任何语言开发电子商务站点所涉及的一些常见问题。我们还将介绍如何使用PHP和MySQL来进行用户身份验证,以及安全地搜集、传输和保存数据。

第四篇“PHP的高级技术”,提供了PHP中一些主要内置函数的详细介绍。我们选择了一些在创建站点时可能用到的函数库进行介绍。读者将学习如何与服务器进行交互、如何与网络进行交互、图像的生成、时间和数据的操作以及会话变量。

第五篇“创建实用的PHP和MySQL项目”是我们最喜欢的一篇,主要介绍如何解决现实项目中可能遇到的实际问题,例如管理和调试大型项目。本章提供了一些能够说明PHP和MySQL强大功能的示例项目。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!