猜你喜欢
PHP和MySQL Web开发(原书第5版)

PHP和MySQL Web开发(原书第5版)

书籍作者:卢克·韦林(Luke ISBN:9787111587736
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:5844
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

全书共分五篇,31章。第一篇(第1~7章)涵盖PHP语言的基础知识,包括PHP快速入门、数据存储和读取、数组、字符串操作与正则表达式、代码重用与函数编写、面向对象特性以及错误和异常处理。第二篇(第8~13章)涵盖MySQL的基础知识,包括Web数据库设计、创建和使用,以及使用PHP从Web访问MySQL数据库、MySQL高级管理和高级编程。第三篇(第14~16章)讲解Web应用的安全性,分析了Web应用的安全风险、如何构建安全的Web应用,以及使用PHP实现身份认证的方法。第四篇(第17~24章)讲解PHP的高级编程技术,包括与文件系统和服务器的交互、使用网络和协议函数、管理日期和时间、国际化与本地化、图像生成、使用PHP会话控制、JavaScript与PHP集成,以及PHP的其他有用特性。第五篇(第25~31章)的重点是实战,该篇从在大型项目中使用PHP和MySQL开始,针对当前*新Web应用开发潮流,介绍了几个重要的Web产品实现细节,这些项目包括:用户身份认证和个性化、基于Web的电子邮件客户端、社交媒体集成和购物车。


作者简介

Luke Welling是OmniTI公司的软件工程师,经常在OSCON、ZendCon、MySQLUC、PHPCon、OSDC和LinuxTag等国际会议上就开源和Web开发主题发表演讲。在加入OmniTI公司之前,他曾作为数据库提供商的Web分析师为Hitwise.com公司工作。此外,他还是Tangled Web Design公司的独立顾问,并曾在澳大利亚墨尔本RMIT大学教授计算机科学课程。

Laura Thomson是Mozilla公司的研发总监,也是OmniTI公司和Tangled Web Design公司的董事。此外,Laura曾在RMIT大学和波士顿咨询公司工作过。


编辑推荐

《PHP和MySQL Web开发(原书第5版)》,是PHP和MySQL Web应用开发方面的“圣经”。书中内容丰富完备,用例简单实用。既包括PHP语言的基础知识和编程技巧,又包括MySQL数据库的使用基础和实战沉淀。除此之外,书中还涵盖国际化本地化以及安全性话题。对于开发安全的、适用于全球用户的Web应用来说,是一本不可多得的宝典。另外值得一提的是,英文版原书中后4章的实例是在线内容,我们已经将这些内容涵盖在中文版纸质书中,方便读者参考。


升级内容

与本书第4版相比,第5版进行了全面更新、重写和扩展,详尽介绍了PHP 5.6到7的版本更新和新特性,以及MySQL*新版本的新特性。


前言

译者序 The Translator's Words

PHP和MySQL依旧是如今比较流行的开源技术之一,非常适用于Web应用的开发。

PHP是一种服务器端脚本语言,可以用于生成动态内容。它功能强大,与HTML脚本融合在一起,并内置有访问数据库的功能。

MySQL是基于SQL的、完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强大、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用多种语言编写访问MySQL 数据库的程序。

本书内容丰富完备,示例简单实用。书中既包括了PHP语言的基础知识,又包括了MySQL数据库的使用基础;既提供了PHP基础编程技巧,又介绍了PHP与MySQL的实战沉淀。除此之外,书中还涵盖了国际化、本地化以及安全性话题。对于开发安全的、适用于全球用户的Web应用来说,本书的确是一本不可多得的宝典。

本书第一篇和第二篇依旧分别是PHP和MySQL的入门介绍,第三篇探讨了Web应用安全问题,第四篇介绍PHP的高级编程技术,第五篇重点在实战。针对当前最新Web应用开发潮流,介绍了几个重要的Web产品实现细节,包括设计、计划、实施以及测试环节。这些实用项目包括:

用户身份验证和个性化

基于Web的电子邮件客户端

社交媒体集成

购物车

第5版在第4版的基础上进行了全面更新、重写和扩展,详尽介绍了PHP 5.6到7的版本更新和新特性,此外还介绍了MySQL最新版本的新特性。

综观全书,内容广泛,风格严谨,理论和实践紧密结合。既有详细的概念说明,又有复杂而完整的实例代码,读者能够轻松地将自己所学的理论知识付诸实践。正是出于这个原因,本书适用的读者非常广泛。对于初学者来说,本书可以作为教材和参考书;对于有丰富经验的PHP和MySQL高手,本书也是一本很好的参考手册,因此本书适用于各个层次的PHP程序员。另外,第5版的中文版也对第4版的一些翻译错误进行了更正。

参加本书翻译工作的有:熊慧珍、武欣、于广乐、陶立秋、于苗苗、罗剑锋、姜燕梅、罗云峰,最后由武欣统稿。

由于译者水平所限,不当和错误之处在所难免,敬请各位专家和读者批评指正。


译 者

2017年10月


About the Authors 作者简介

Luke Welling是OmniTI公司的一名软件工程师,经常出席一些国际会议(例如,OSCON、ZendCon、MySQLUC、PHPCon、OSDC以及LinuxTag)并就开源和Web开发话题发表演讲。在加入OmniTI公司之前,他曾作为数据库提供商MySQL AB的Web分析师为Hitwise.com公司工作。此外,他还是Tangled Web Design公司的独立顾问,并曾在澳大利亚墨尔本RMIT大学教授计算机科学课程。他拥有应用科学(计算机科学)的学士学位。

Laura Thomson是Mozilla公司的研发总监。之前,她是OmniTI公司和Tangled Web Design公司的董事。此外,Laura曾经在RMIT大学和波士顿咨询公司工作过。她拥有应用科学(计算机科学)学士学位和工程学(计算机系统工程)学士学位。闲暇时间,她非常喜欢骑马,热衷于免费软件和开源软件。

贡献作者

Julie C. Meloni是一名软件开发经理以及技术顾问,生活在华盛顿特区。她编著过一些图书,发表过一些文章,主要集中在基于Web的开发语言和数据库领域,其中包括畅销书《Sams Teach Yourself PHP,MySQL, and Apache All in One》。

John Coggeshall是Internet Technology Solutions公司的创始人,该公司是Internet和PHP相关的顾问公司,服务于全球用户。同时,他还是CoogleNet公司的创始人,该公司是基于WiFi网络的订阅服务公司。作为Zend Technologies公司全球服务团队的资深成员,他从1997年开始使用PHP,目前已经出版了4本相关图书并发表了超过100篇关于PHP技术的文章。

Jennifer Kyrnin是一名Web设计人员,自1995年开始从事Web设计和图书编写。她出版的图书包括《Sams Teach Yourself Bootstrap in 24 Hours》《Sams Teach Yourself Responsive Web Design in 24 Hours》以及《Sams Teach Yourself HTML5 Mobile Application Development in 24 Hours》。



前  言 Preface

欢迎来到PHP和MySQL Web开发的世界。在本书中,我们将把使用PHP与MySQL的经验和心得体会毫无保留地分享给你,PHP和MySQL是目前最热门的两个Web开发工具。

前言主要介绍以下内容:

为什么要学习本书

学习本书将掌握哪些知识

PHP和MySQL及其强大之处

PHP和MySQL最新版本变化

本书组织结构

下面,就让我们开始吧!

为什么要学习本书

本书将介绍如何创建可交互的Web应用,包括从最简单的订单表单到复杂而又安全的Web应用。此外,读者还将了解如何使用开源代码技术来实现它。

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

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

学习本书将掌握哪些知识

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

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

在本书中,即使是在介绍性章节,我们也是以实战应用的介绍为重点。本书从一个简单系统开始,然后介绍PHP和MySQL的不同部分。

之后讨论与创建一个真实Web站点相关的安全性和身份验证方面的问题,并且介绍如何使用PHP和MySQL来实现这些功能。通过讨论JavaScript及其在Web应用开发中的角色,介绍如何集成协同前端和后端技术。

本书第五篇将介绍如何开发真实项目,并且和读者一起设计、计划及构建如下项目:

用户身份验证和个性化

基于Web的电子邮件客户端

社交媒体集成

这些项目都是可以直接使用的,或者可以经过一定的修改来满足读者的实际需要。之所以选择这些项目是因为我们相信它们是Web程序员最常面临的项目。如果读者的需求有所不同,本书也可以帮助大家实现目标。

什么是PHP

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

PHP出现于1994年,最初只是Rasmus Lerdorf一个人的投入。后来被一些天才所接受,它经历了数次重大的重写,才变成了我们今天所看到的广为使用的、成熟的PHP。根据Google公司的Greg Michillie 2014年5月的数据, PHP已经运行于全球75%的Web站点,而到2016年6月,这个数据已经变成82%。

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

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

目前,PHP的主要版本是7。该版本的Zend引擎经过完全重写,而且还实现了一些主要的语言改进。本书所有代码均已在PHP 7以及PHP 5.6下测试和验证。

PHP的主页是:http://www.php.net。

Zend Technologies的主页是:http://www.zend.com。

MySQL是什么

MySQL(发音为My-Ess-Que-Ell)是一个快速而又健壮的关系型数据库管理系统(Relational Database Management System,RDBMS)。数据库将允许你高效地存储、搜索、排序和检索数据。MySQL服务器将控制对数据的访问,从而确保多个用户可以并发访问数据、可以快速访问数据以及只有授权用户才能获得数据访问。因此,MySQL是一个多用户、多线程的服务器。它使用了结构化查询语言(SQL),该语言是标准数据库查询语言。MySQL是在1996年公布的,但是其开发历史可以追溯到1979年。它是世界上最受欢迎的开源数据库,已经多次获得“Linux Journal Readers?Choice”大奖。

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

为什么要使用PHP和MySQL

当我们准备创建一个站点时,可以选择使用许多不同的产品。

你必须选择:

运行Web服务器的宿主:云、虚拟私有服务器或真实硬件

操作系统

Web服务器软件

数据库管理系统或其他数据存储

编程语言或脚本语言

也可以采用多种数据存储的混合架构。这些产品的选择具有相互依赖性。例如,并不是所有的操作系统都可以在所有的硬件上运行,并不是所有的Web服务器都支持所有的编程语言,等等。

在本书中,我们不会过于关注硬件、操作系统或Web服务器软件,我们也不需要关注这些。PHP和MySQL的一个最佳特性就是它们能够在任何主流操作系统和许多非主流操作系统上工作。

大部分PHP代码在不同的操作系统和Web服务器上都是可移植的。但是,也有一些与操作系统的文件系统相关的PHP函数,在本书以及PHP手册中,这些函数都将被明确标识出来。

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

PHP的一些优点

PHP的主要竞争对手是Python、Ruby on Rails、Node.js、Perl、Microsoft.NET和Java。

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

高性能

可扩展性

支持许多不同数据库系统的接口

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

低成本

容易学习和使用

强面向对象支持

可移植性

开发方法的灵活性

源代码可用

可用的技术和文档支持

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

性能

PHP速度非常快。使用一个独立的廉价服务器,就可以满足每天几百万次的点击量。它支持的Web应用小到电子邮件表单,大到整个站点,例如Facebook和Esty。

扩展性

PHP具有Rasmus Lerdorf经常提到的“shared-nothing”架构。这就意味着,可以使用大量普通服务器高效廉价地实现容量水平扩展。

数据库集成

对于许多数据库系统来说,PHP都具有针对它们的原生连接支持。除了MySQL之外,可以直接连接到PostgreSQL、Oracle、MongoDB和MSSQL数据库。PHP 5和PHP 7还增加了针对普通文件(SQLite)的内置SQL接口。

使用开放式数据库连接标准(ODBC),可以连接到提供了ODBC驱动程序的任何数据库。这包括Microsoft产品和许多其他产品。

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

内置函数库

由于PHP是为Web开发而设计的,因此它提供了许多内置函数来执行有用的Web任务。可以立即生成图像、连接到Web服务和其他网络服务、解析XML、发送电子邮件、使用cookie以及生成PDF文档,所有这些任务只需要少量代码行。

成本

PHP是免费的,可以在任何时候从http://www.php.net站点免费下载最新版本。

容易学习

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

面向对象支持

PHP 5具有设计良好的面向对象特性,这些特性在PHP 7里得到改进。如果读者学过Java或C++编程,将发现你熟悉的一些特性(和常见语法),例如继承、私有和受保护的属性及方法、抽象类和方法、接口、构造函数和析构函数。读者还将发现一些不常见的特性,例如iterator和trait。

可移植性

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

通常,代码不经过任何修改就可以运行于不同的操作系统。

开发方法的灵活性

通过基于设计模式的框架(例如,模型-视图-控制器,MVC),使用PHP,可以快速实现简单任务,或开发大型应用。

源代码可用

可以访问PHP的所有源代码。与商业性的封闭式源代码产品不同,可以免费在PHP中修改或者添加新特性。

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

可用的技术和文档支持

Zend Technologies(www.zend.com)公司通过提供商业性技术支持和相关的软件为PHP开发提供支持。

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

PHP 7.0的关键特性

2015年12月,期待已久的PHP 7终于问世。正如前面介绍的,本书将覆盖PHP 5.6和PHP 7,你可能会问“那PHP 6呢”?答案很简单:没有PHP 6,PHP 6没有正式发布过。但是,的确有开发人员开发过PHP 6,但最终没有取得成果。曾经也有些关于PHP 6的项目规划,但这些规划带来的复杂性让PHP开发团队最终放弃了PHP 6。PHP 7不是PHP 6,它并没有包含PHP 6的代码和特性,因此PHP 7有其自己的重点—性能。

在底层,PHP 7包含了Zend引擎的重构,为许多Web应用带来了明显的性能提升:有些甚至提升了100%!虽然PHP 7提升了性能,减少了内存使用量,但也引入了一些向下兼容的问题。事实上,PHP 7引入了非常少的向下兼容问题。在本书后续内容中,如果存在向下兼容问题,我们将专门介绍它,这样可以确保本书内容适用于PHP 5.6和PHP 7,毕竟在本书编写时,PHP 7还没有被商业性Web主机服务提供商广泛应用。

MySQL的一些优点

在关系型数据库领域,MySQL的主要竞争产品包括PostgreSQL、Microsoft SQL Server和Oracle。在Web应用开发领域,也有使用非SQL非关系型数据库(例如MongoDB)的趋势。接下来介绍为何MySQL仍旧适用于Web应用。

MySQL具备很多优点,包括:

高性能

低成本

易于配置和学习

可移植性

源代码可用

支持可用

下面将详细介绍以上优点。

性能

不可否认,MySQL的速度非常快。在http://www.mysql.com/why-mysql/benchmarks/站点,可以找到许多开发人员的评测页面。

低成本

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

易用

大多数现代数据库都使用SQL。如果读者曾经使用过其他的RDBMS,就能快速上手MySQL。MySQL的设置也比其他类似产品的设置简单。

可移植性

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

源代码可用

与PHP一样,读者可以获得并修改MySQL的源代码。对大多数用户来说,基本上不需要对MySQL源代码进行修改,但是由于有了源代码访问,它消除了开发者的后顾之忧,可以确保未来的持续性,并且提供了紧急情况下的选择。

事实上,目前MySQL也出现了一些分支,例如MariaDB,它们也由MySQL的原开发人员开发(包括Michael ‘Monty’ Widenius,http://mariadb.org),读者可以考虑使用。

支持可用

并不是所有的开源产品都有一家母公司来提供技术支持、培训、咨询和认证,但是读者可以从Oracle获得所有这些服务(因为Oracle收购了Sun公司,而Sun公司之前收购了MySQL AB)。

MySQL 5.x的新特性

在本书编写时,MySQL的最新版本是5.7。

在最近几个版本中,MySQL新引入的特性包括:

大范围的安全提升

InnoDB表的FULLTEXT支持

InnoDB的非SQL API支持

分区支持

复制改进,包括基于行的复制和GTID

线程池

可插拔验证

多核扩展性

更好的诊断工具

InnoDB作为默认引擎

IPv6支持

插件API

事件调度

自动升级

其他变化包括更多ANSI标准支持以及性能提升。

如果还在使用MySQL 4.x或3.x版本,你应该了解从MySQL 4.0版本开始新增加的特性:

视图

存储过程

触发器和游标

子查询支持

存储地理数据的GIS类型

国际化支持改进

事务安全存储引擎InnoDB

MySQL查询缓存,它极大地提升了Web应用常有的重复性查询的查询速度

本书的组织结构

本书分为五个部分(除此之外,还有附录)。

第一篇(使用PHP),通过一些示例概述了PHP语言的主要部分。每一个示例都是在构建真实电子商务站点时可能用到的示例,而不是一些泛泛的代码示例。如果读者已经使用过PHP,可以跳过第1章。如果读者是PHP新手或者是入门程序员,那么可能需要花一些时间阅读第1章。

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

第三篇(Web应用安全性)介绍了使用任何语言开发Web应用所涉及的常见问题。还将介绍如何使用PHP和MySQL来进行用户身份验证,以及安全地搜集、传输和保存数据。

第四篇(PHP高级编程技术)提供了PHP中一些主要内置函数的详细介绍。我们选择了一些在创建Web应用时可能用到的函数库进行介绍。读者将学会如何与服务器进行交互、如何与网络进行交互、图像的生成、日期时间的操作以及会话处理。

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

小结

我们希望你能喜欢本书,享受学习PHP和MySQL的过程,就像我们开始使用这些产品时的感受一样。PHP和MySQL的确是非常不错的产品。很快,你就能够加入成千上万的Web开发人员行列,同他们一起使用这些健壮、功能强大的工具来构建动态、实时的Web应用。


目录

本书赞誉

译者序

前言

作者简介

第一篇 使用PHP

第1章 PHP快速入门教程2

1.1 开始之前:了解PHP3

1.2 创建示例Web应用:Bob汽车零部件商店3

1.2.1 创建订单表单3

1.2.2 表单处理 5

1.3 在HTML中嵌入PHP5

1.3.1 PHP标记6

1.3.2 PHP语句7

1.3.3 空格7

1.3.4 注释 8

1.4 添加动态内容8

1.4.1 调用函数9

1.4.2 使用date()函数 9

1.5 访问表单变量10

1.5.1 表单变量 10

1.5.2 字符串连接12

1.5.3 变量和字面量12

1.6 理解标识符 13

1.7 检查变量类型 14

1.7.1 PHP的数据类型 14

1.7.2 类型强度 14

1.7.3 类型转换 15

1.7.4 可变变量 15

1.8 声明和使用常量 16

1.9 理解变量作用域 16

1.10 使用操作符 17

1.10.1 算术操作符 18

1.10.2 字符串操作符18

1.10.3 赋值操作符 19

1.10.4 比较操作符 21

1.10.5 逻辑操作符 22

1.10.6 位操作符 22

1.10.7 其他操作符 23

1.11 计算表单总金额 25

1.12 理解操作符优先级和结合性 26

1.13 使用变量处理函数27

1.13.1 测试和设置变量类型 27

1.13.2 测试变量状态 28

1.13.3 变量的重解释 29

1.14 根据条件进行决策 29

1.14.1 if语句 29

1.14.2 代码块 30

1.14.3 else语句 30

1.14.4 elseif语句 31

1.14.5 switch语句 32

1.14.6 比较不同条件 33

1.15 通过迭代实现重复动作 34

1.15.1 while循环 35

1.15.2 for循环和foreach循环 36

1.15.3 do...while循环 37

1.16 从控制结构或脚本中跳出 38

1.17 使用其他控制结构语法 38

1.18 使用declare 39

1.19 下一章 39

第2章 数据存储和读取40

2.1 保存数据以便后期使用 40

2.2 存储和获取Bob的订单 41

2.3 文件处理 41

2.4 打开文件 42

2.4.1 选择文件模式 42

2.4.2 使用fopen()打开文件 42

2.4.3 通过FTP或HTTP打开文件 44

2.4.4 解决打开文件时可能遇到的问题 45

2.5 写文件 47

2.5.1 fwrite()的参数 47

2.5.2 文件格式 47

2.6 关闭文件 48

2.7 读文件 50

2.7.1 以只读模式打开文件:fopen()51

2.7.2 知道何时读完文件:feof()51

2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv() 52

2.7.4 读取整个文件:readfile()、fpassthru()、file()以及file_get_contents()53

2.7.5 读取一个字符:fgetc() 53

2.7.6 读取任意长度:fread()54

2.8 使用其他文件函数 54

2.8.1 查看文件是否存在:file_exists() 54

2.8.2 确定文件大小:filesize() 55

2.8.3 删除一个文件:unlink()55

2.8.4 在文件中定位:rewind()、fseek()和ftell() 55

2.9 文件锁定 56

2.10 更好的方式:数据库管理系统 57

2.10.1 使用普通文件的几个问题 58

2.10.2 RDBMS是如何解决这些问题的 58

2.11 进一步学习 59

2.12 下一章 59

第3章 使用数组60

3.1 什么是数组 60

3.2 数字索引数组 61

3.2.1 数字索引数组的初始化 61

3.2.2 访问数组内容 62

3.2.3 使用循环访问数组 63

3.3 使用不同索引的数组 64

3.3.1 初始化数组 64

3.3.2 访问数组元素 64

3.3.3 使用循环语句 64

3.4 数组操作符 66

3.5 多维数组 66

3.6 数组排序 69

3.6.1 使用sort()函数 69

3.6.2 使用asort()函数和ksort()函数对数组排序 70

3.6.3 反向排序 70

3.7 多维数组排序 70

3.7.1 使用array_multisort()函数71

3.7.2 用户定义排序 71

3.7.3 自定义排序函数的反序 73

3.8 对数组进行重新排序 73

3.8.1 使用shuffle()函数 73

3.8.2 逆序数组内容75

3.9 从文件载入数组 75

3.10 执行其他数组操作 79

3.10.1 在数组中浏览:each()、current()、reset()、end()、next()、pos()和prev()79

3.10.2 对数组每一个元素应用函数:array_walk() 80

3.10.3 统计数组元素个数:count()、sizeof()和array_count_values() 81

3.10.4 将数组转换成标量变量:extract() 81

3.11 进一步学习 83

3.12 下一章 83

第4章 字符串操作与正则表达式84

4.1 创建一个示例应用:智能表单邮件 84

4.2 字符串的格式化86

4.2.1 字符串截断:chop()、ltrim()和trim() 87

4.2.2 格式化字符串以便输出 87

4.3 使用字符串函数连接和分割字符串93

4.3.1 使用函数explode()、implode()和join() 93

4.3.2 使用strtok()函数 94

4.3.3 使用substr()函数 95

4.4 字符串比较 96

4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp() 96

4.4.2 使用strlen()函数判断字符串长度 96

4.5 使用字符串函数匹配和替换子字符串 97

4.5.1 在字符串中查找字符串:strstr()、strchr()、strrchr()和stristr() 97

4.5.2 查找子字符串的位置:strpos()和strrpos() 98

4.5.3 替换子字符串:str_replace()和substr_replace() 99

4.6 正则表达式的介绍 100

4.6.1 基础知识 100

4.6.2 分隔符101

4.6.3 字符类和类型 101

4.6.4 重复 102

4.6.5 子表达式 102

4.6.6 子表达式计数 103

4.6.7 定位到字符串的开始或末尾 103

4.6.8 分支103

4.6.9 匹配特殊字符 103

4.6.10 元字符一览 104

4.6.11 转义序列104

4.6.12 回溯引用105

4.6.13 断言105

4.6.14 在智能表单中应用 106

4.7 用正则表达式查找子字符串 107

4.8 用正则表达式替换子字符串 107

4.9 使用正则表达式分割字符串 108

4.10 进一步学习 109

4.11 下一章 109

第5章 代码重用与函数编写110

5.1 代码重用的好处 110

5.1.1 成本111

5.1.2 可靠性 111

5.1.3 一致性 111

5.2 使用require()和include()函数 111

5.2.1 使用require()函数引入代码112

5.2.2 使用require()制作Web站点模板113

5.2.3 使用auto_prepend_file和 auto_append_file 118

5.3 使用PHP函数 119

5.3.1 调用函数 119

5.3.2 调用未定义函数 120

5.3.3 理解大小写和函数名称121

5.4 自定义函数121

5.5 了解函数基本结构 122

5.6 参数使用 123

5.7 理解作用域126

5.8 引用传递和值传递128

5.9 使用return关键字 129

5.10 递归实现 131

5.11 进一步学习 134

5.12 下一章 134

第6章 面向对象特性135

6.1 理解面向对象概念 135

6.2 在PHP中创建类、属性和操作 138

6.3 类的实例化139

6.4 使用类属性 140

6.5 调用类操作141

6.6 使用private和public关键字控制访问 141

6.7 编写访问器函数142

6.8 在PHP中实现继承 143

6.9 使用Trait149

6.10 类设计 151

6.11 编写自定义类代码 151

6.12 理解PHP面向对象高级功能 158

6.13 下一章 170

第7章 错误和异常处理 171

7.1 异常处理的概念 171

7.2 Exception类173

7.3 用户自定义异常 174

7.4 Bob汽车零部件商店应用的异常 176

7.5 异常和PHP的其他错误处理机制 179

7.6 进一步学习 180

7.7 下一章 180

第二篇 使用MySQL

第8章 Web数据库设计182

8.1 关系型数据库的概念 183

8.2 设计Web数据库185

8.3 Web数据库架构190

8.4 进一步学习191

8.5 下一章191

第9章 Web数据库创建192

9.1 使用MySQL监视程序193

9.2 登录MySQL194

9.3 创建数据库和用户195

9.4 设置用户与权限195

9.5 MySQL权限系统介绍196

9.6 设置Web用户201

9.7 使用正确的数据库202

9.8 创建数据库表202

9.9 理解MySQL标识符208

9.10 选择列数据类型209

9.11 进一步学习213

9.12 下一章213

第10章 使用MySQL数据库214

10.1 什么是SQL214

10.2 在数据库中插入数据215

10.3 从数据库读取数据217

10.4 更新数据库记录229

10.5 创建后修改表230

10.6 删除数据库记录232

10.7 删除表233

10.8 删除数据库233

10.9 进一步学习233

10.10 下一章233

第11章 使用PHP从Web访问MySQL数据库234

11.1 Web数据库架构及工作原理234

11.2 从Web查询数据库238

11.3 向数据库写入数据243

11.4 使用其他PHP与数据库交互接口247

11.5 进一步学习250

11.6 下一章250

第12章 MySQL高级管理251

12.1 深入理解权限系统251

12.2 提升MySQL数据库安全257

12.3 获取数据库的更多信息259

12.4 优化数据库265

12.5 MySQL数据库备份266

12.6 MySQL数据库恢复267

12.7 实现复制267

12.8 进一步学习269

12.9 下一章269

第13章 MySQL高级编程270

13.1 LOAD DATA INFILE语句270

13.2 存储引擎271

13.3 事务272

13.4 外键273

13.5 存储过程274

13.6 触发器281

13.7 进一步学习283

13.8 下一章283

第三篇 Web应用安全性

第14章 Web应用安全风险286

14.1 识别面临的安全威胁286

14.2 了解对手292

14.3 下一章293

第15章 构建安全的Web应用294

15.1 安全策略294

15.2 代码安全296

15.3 Web服务器和PHP的安全306

15.4 数据库服务器的安全308

15.5 保护网络310

15.6 计算机和操作系统的安全312

15.7 灾难计划313

15.8 下一章313

第16章 使用PHP实现身份验证方法314

16.1 识别访问者314

16.2 实现访问控制315

16.3 使用基本认证320

16.4 在PHP中使用基本认证320

16.5 使用Apache的.htaccess基本认证321

16.6 创建自定义认证324

16.7 进一步学习325

16.8 下一章325

第四篇 PHP高级编程技术

第17章 与文件系统和服务器交互328

17.1 上传文件328

17.2 使用目录函数336

17.3 与文件系统交互341

17.4 使用程序执行函数344

17.5 与环境交互:getenv()和putenv()347

17.6 进一步学习347

17.7 下一章347

第18章 使用网络和协议函数348

18.1 了解可用协议348

18.2 发送和读取邮件349

18.3 使用其他站点数据349

18.4 使用网络查询函数352

18.5 备份或镜像文件355

18.6 进一步学习363

18.7 下一章363

第19章 管理日期和时间364

19.1 在PHP中获得日期和时间364

19.2 PHP和MySQL的日期格式互转371

19.3 在PHP中计算日期372

19.4 在MySQL中计算日期373

19.5 使用微秒374

19.6 使用日历函数375

19.7 进一步学习375

19.8 下一章376

第20章 国际化与本地化377

20.1 本地化不只是翻译377

20.2 理解字符集378

20.3 创建可本地化页面基础结构380

20.4 在国际化应用中使用gettext()函数383

20.5 进一步学习386

20.6 下一章386

第21章 生成图像387

21.1 设置PHP图像支持387

21.2 理解图像格式388

21.3 创建图像389

21.4 在其他页面中使用自动创建的图像393

21.5 使用文本和字体创建图像394

21.6 绘制图形图像数据401

21.7 使用其他图像函数409

21.8 下一章409

第22章 使用PHP会话控制410

22.1 什么是会话控制410

22.2 理解基本会话功能410

22.3 实现简单会话412

22.4 创建简单会话示例414

22.5 配置会话控制416

22.6 使用会话控制实现身份验证417

22.7 下一章423

第23章 JavaScript与PHP集成424

23.1理解AJAX424

23.2 jQuery概述425

23.3 在Web应用中使用jQuery425

23.4 在PHP中使用jQuery和AJAX434

23.5 进一步学习445

23.6 下一章445

第24章 PHP的其他有用特性446

24.1 字符串计算函数:eval()446

24.2 终止执行:die()和exit()447

24.3 序列化变量和对象448

24.4 获取PHP环境信息448

24.5 临时修改运行时环境450

24.6 高亮源代码451

24.7 在命令行上使用PHP452

24.8 下一章453

第五篇 构建实用的PHP和MySQL项目

第25章 在大型项目中使用PHP和MySQL456

25.1 在Web开发中应用软件工程技术457

25.2 规划和运营Web应用项目457

25.3 代码重用458

25.4 编写可维护代码458

25.5 实现版本控制462

25.6 选择开发环境463

25.7 项目文档化463

25.8 原型定义464

25.9 隔离逻辑和内容464

25.10 代码优化465

25.11 测试466

25.12 进一步学习466

25.13 下一章467

第26章 调试和日志468

26.1 编程错误468

26.1.1 语法错误468

26.1.2 运行时错误469

26.1.3 逻辑错误474

26.2 变量调试辅助475

26.3 错误报告级别477

26.4 修改错误报告设置478

26.5 触发自定义错误479

26.6 错误日志记录480

26.7 错误日志文件482

26.8 下一章483

第27章 构建用户身份验证和个性化484

27.1 解决方案组件484

27.2 解决方案概述486

27.3 实现数据库487

27.4 实现基本网站488

27.5 实现用户身份验证491

27.6 实现书签存储和读取507

27.7 实现书签推荐513

27.8 考虑可能的扩展516

第28章 使用Laravel构建基于Web的电子邮件客户端(第一部分)517

28.1 Laravel 5介绍517

第29章 使用Laravel构建基于Web的电子邮件客户端(第二部分) 536

29.1 使用Laravel构建简单的IMAP客户端536

29.2 创建基于Web的电子邮件客户端561

29.3 小结581

第30章 社交媒体集成分享以及验证582

30.1 OAuth:Web服务认证582

30.2 小结594

第31章 构建购物车595

31.1 解决方案组件595

31.2 解决方案概述597

31.3 实现数据库599

31.4 实现在线类目601

31.4.3 显示图书详情607

31.5 实现购物车608

31.6 实现支付622

31.7 实现管理界面624

31.8 扩展项目631

附录A 安装Apache、PHP和MySQL632


产品特色