本书教您学习怎样:
■ 安装和配置PHP脚本语言、MySQL数据库系统和Apache Web服务器。
■ 综合各项技术创建一个动态的、支持数据库的Web站点。
■ 通过PHP与MySQL进行交互。
■ 与表单和文件一起工作。
■ 创建基于Web的讨论论坛或邮件列表。
■ 添加一个店面和购物车。
■ 优化MySQL数据库。
■ 调优Apache服务器性能。
■ 限制对应用程序的访问。
■ 安装一个安全的Web服务器。
一册在手,学习不愁
在短时间内,通过整合3个先进的开源Web开发工具:PHP、MySQL和Apache,您能学会怎样创建动态的、交互的网站和应用程序。
本书的每一条经验都是基于前面知识的积累。通过使用一个简单易懂的、循序渐进的方法,让您能逐步地学习关于PHP脚本、MySQL数据库和Apache Web服务器的基础知识。
不管您是使用Linux、Windows或者Mac OS X,本书附赠光盘都附带了一个完整的启动工具,使你能够安装设置一个可以用于学习、测试和产品开发的环境所需的所有软件。
无
欢迎阅读本书。在本版书中,我们终于能够一起使用PHP 5和MySQL 5,这都是我们期待已久的软件版本。因此,本书中的所有代码都是基于PHP 5来和MySQL 5交互的。此外,我们添加了两个新的章节来介绍PHP和MySQL中的一些新特性。在本书中,你将学到配置和管理Apache Web服务器所必需的概念、PHP编程基础,以及使用和管理与数据库系统相关的MySQL的方法。本书的目标是提供理解如何无缝地整合这些技术的基础,并且教授整合它们的实用知识。
本书的目标读者
本书是为对基于Web的开发环境(可能是在Linux/UNIX或Windows下)具有一般性理解的人们量身打造的。假设你已经熟悉了自己的操作系统,并且掌握了编译(在Linux/UNIX系统上)或安装(在Windows systems和Mac OS X)软件的基本方法。
假设读者没有任何关于语言的知识,可先阅读介绍使用PHP编程的章节,然而,如果你有使用其他编程语言的经验,例如ASP、JSP或Perl,你会发现这些章节学起来很容易。类似的,如果你已经使用过其他的数据库,例如Oracle或Microsoft SQL Server,就会为学习和MySQL相关的内容奠定一个坚实的基础。
唯一真正需要的是你能够理解使用HTML创建静态Web内容。如果你只是刚刚开始Web开发,还是应该能够使用本书,但是,你应该先考虑阅读一个HTML教程。如果你熟悉了创建基本的页面,那么你会学得更好。
本书的组织结构
本书分为六个部分,对应特定的主题。应该按部就班地学习每个部分,因为每个部分的内容都构建在前面部分的基础之上。
第一部分“基础知识”,提供一个安装的快速指导,并带领读者深入了解安装和配置MySQL、Apache和PHP的过程。在继续学习之前,你至少需要完成这些课程中的一种,要么快速安装,或者是更长的过程,除非你已经成功地安装了这些软件。即便你不需要在自己的环境中安装或配置MySQL、Apache和PHP,还是应该浏览一下这些课程,以便理解它们相互交互的基础。
第二部分“PHP语言结构”,教授PHP语言基础,包括数组和对象这样的结构化元素。那些示例将帮助你习惯于编写代码,将这些示例上传到你的服务器,并测试其结果。
第三部分“深入编程”,介绍了中级应用程序开发的主题,包括使用表单和文件、限制访问以及完成一些小项目,这些小项目是设计用来介绍一个专门概念的。
第四部分“PHP和MySQL整合”,介绍使用数据库的一般性方法,例如,数据库规范化,以及使用PHP来连接并操作MySQL。其中包含了SQL基础知识,还包括特定于MySQL的函数和其他信息。
第五部分“基本项目”,介绍如何整合前面已经学习到的所有知识,使用PHP和MySQL执行一个特定任务。这些项目包括地址簿、一个讨论论坛和一个基本的网上商店。这些例子都是在一个黑白环境下构建的,就是说在美观性上显得很简约。这使你可以把精力集中在程序设计和搭建结构所需的逻辑上,而不是在显示美观上。
第六部分“管理和优化”,介绍管理和优化Apache和MySQL。它还包含了有关虚拟主机以及建立一个安全Web服务器的信息。
如果你发现自己已经熟悉某个主题,可以跳过并继续向前学习。然而,某些地方会引用前面的章节中学习过的特定概念,因此,请注意必须浏览一下跳过的章节,以便保证你的开发环境和本书一致。
在每章的末尾,都有一些问答题来测试你对该章内容的掌握程度。附加的思考题则提供了应用该章知识的另外一种方式,并且引导你在下一章使用这些刚刚学习到的知识。
本书体例
本书使用不同的字体来表示代码和正文,也通过这种方法来帮你识别重要的概念。在本书中,代码、命令和你所输入的或者在计算机屏幕上看到的文本,都使用等宽字体。“提示”给出了和当前话题相关的一段有趣的信息。
“你知道吗”提出建议,或者教给你执行一项任务。
“注意”警告你潜在的缺陷并说明如何避免它们。
本书教您学习怎样: ■ 安装和配置PHP脚本语言、MySQL数据库系统和Apache Web服务器。 ■ 综合各项技术创建一个动态的、支持数据库的Web站点。 ■ 通过PHP与MySQL进行交互。 ■ 与表单和文件一起工作。 ■ 创建基于Web的讨论论坛或邮件列表。 ■ 添加一个店面和购物车。 ■ 优化MySQL数据库。 ■ 调优Apache服务器性能。 ■ 限制对应用程序的访问。 ■ 安装一个安全的Web服务器。 一册在手,学习不愁 在短时间内,通过整合3个先进的开源Web开发工具:PHP、MySQL和Apache,您能学会怎样创建动态的、交互的网站和应用程序。 本书的每一条经验都是基于前面知识的积累。通过使用一个简单易懂的、循序渐进的方法,让您能逐步地学习关于PHP脚本、MySQL数据库和Apache Web服务器的基础知识。 不管您是使用Linux、Windows或者Mac OS X,本书附赠光盘都附带了一个完整的启动工具,使你能够安装设置一个可以用于学习、测试和产品开发的环境所需的所有软件。
Julie C. Meloni:Julie C. Meloni: i2i Interactive公司(一家多媒体公司,坐落于加利福尼亚州洛杉矶市)的技术总监。她自从Web诞生的时候就开始从事基于Web应用的开发,并喜欢写作一些关于Web编程语言和数据库方面的图书(如《Sams Teach Yourself MySQL in 24 Hours》)以及相关主题的文章。
王洪大 李军:暂无简介
在Web应用开发非常普及的今天,PHP语言的应用已经受到专业人士的普遍关注。现在,全球已有450万名PHP开发工程师。而根据TIOBE的最新统计,PHP语言的排名位居第5,仅次于Java、C、VB和C++。
LAMP(Linux+Apache+MySQL+PHP)应用框架在提出之后,迅速得到人们的认可并流行起来。Linux的开放系统,加上最通用的网络服务器Apache,还有开源的关系数据库系统MySQL,以及流行的对象脚本语言PHP,这个最强大的组合使得Web开发人员信心倍增,因为基本上不需要什么成本负担,就能够通过这个框架开发出功能强大的Web应用程序。随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和Net商业软件形成三足鼎立之势,受到整个IT界的关注。
因而,在今天的IT界,尤其是如果你从事Web应用程序的开发,却不能熟练地掌握PHP、MySQL和Apache这三个强大的开源工具,这多少会遭到一些质疑。那么,如何迅速地入门,并掌握它们最核心的应用呢?这正是本书要解决的问题。
本书是为对基于Web的开发环境(可能是在Linux/UNIX或Windows下)具有一般性理解的人们量身打造的。
全书共分为六个部分。第一部分“基础知识”,提供了一个对安装的快速指导,并引领读者深入了解安装和配置MySQL、Apache和PHP的过程。第二部分“PHP语言结构”,教授PHP语言基础,包括数组和对象这样的结构化元素。第三部分“深入编程”,介绍了中级应用程序开发的主题,包括使用表单和文件、限制访问以及完成包含某个专门概念的小项目。第四部分“PHP和MySQL整合”,介绍了使用数据库的一般性方法,例如,数据库规范化,以及使用PHP来连接并操作MySQL。其中包含了SQL基础知识,还包括特定于MySQL的函数和其他信息。第五部分“基本项目”,介绍如何整合前面已经学习到的所有知识,使用PHP和MySQL执行一个特定任务。第六部分“管理和优化”,介绍管理和优化Apache和MySQL的方法。在每章的末尾,都有一些问答题来测试你对章节内容的掌握程度。附加的思考题则提供了应用该章知识的另外一种方式,并且引导你在下一章使用这些刚刚学习到的知识。
本书英文版是美国最受欢迎的IT图书系列“Sams Teach Yourself”中的一本,并且已经出版到了第3版。由于内容清晰易懂,实例内容丰富实用,本书的数版都受到读者的广泛好评和欢迎。
很荣幸能够有机会翻译这样一本PHP、MySQL和Apache技术的入门好书,也非常希望读者朋友们能够通过本书掌握PHP、MySQL和Apache整合应用的Web开发技能。除了王洪大、李军,参加本书翻译工作的还有罗娜、刘金华、刘伟超、罗庚臣、刘二然、郑芳菲、庄逸川、王世高、郭莹、陈垚、邓勇、何进伟、贾晓斌、汪蔚和齐国涛。
译者序
作者简介
前言
第一部分基础知识
第1章安装QuikStart向导1
11Linux/UNIX下的安装1
111安装MySQL1
112安装Apache2
113安装PHP2
12Windows下的安装3
121安装MySQL3
122安装Apache4
123安装PHP6
13Mac OS X下的安装7
131安装MySQL7
132安装PHP7
14故障排除9
第2章安装和配置MySQL10
21MySQL的当前版本和未来版本10
22如何获取MySQL10
23在Linux/UNIX上安装MySQL10
24在Mac OS X上安装MySQL11
25在Windows上安装MySQL13
26安装故障排除18
27基本安全规则18
271启动MySQL18
272增强MySQL连接的安全18
28MySQL权限系统简介19
29使用用户权限20
291添加用户20
292移除权限22
210小结22
211Q&A22
212实践练习23
第3章安装和配置Apache24
31Apache的当前版本及未来版本24
32选择合适的安装方法24
321从源代码安装24
322安装一个二进制代码版本25
33在Linux/UNIX上安装Apache25
331下载Apache源代码25
332解压源代码25
333准备编译Apache25
334编译和安装Apache26
34在Mac OS X上安装Apache26
35在Windows上安装Apache27
36Apache配置文件结构29
361指令29
362容器30
363条件评估31
364ServerRoot指令31
365perdirectory配置文件32
37Apache日志文件32
371access_log文件32
372error_log文件33
373其他文件33
38Apache相关命令33
381Apache服务器二进制33
382Apache控制脚本34
39第一次启动Apache34
391检查你的配置文件34
392启动Apache35
310故障排除36
3101已有Web服务器36
3102不允许绑定到端口36
3103拒绝访问36
3104错误组设置36
311小结36
312Q&A36
313实践练习37
第4章安装和配置PHP38
41PHP的当前版本和未来版本38
42在带有Apache的Linux/UNIX
上编译PHP38
421额外的Linux/UNIX配置选项40
422在Linux/UNIX上整合
PHP和Apache40
43在Mac OS X上安装PHP40
44在Windows上安装PHP42
45phpini基础43
46测试安装43
47获取安装帮助44
48PHP脚本基础45
481开始和结束一个PHP语句块46
482echo语句和print()函数47
483组合HTML和PHP47
484为PHP代码添加注释48
49小结49
410Q&A49
411实践练习49
第二部分PHP语言结构
第5章PHP的组成部分51
51变量51
52数据类型53
521使用settype()来改变类型55
522通过类型转换改变类型55
523为何测试类型57
53操作符和表达式57
531赋值操作符58
532算术操作符58
533连接操作符58
534复合赋值操作符59
535自动增加和减少一个
整型变量60
536比较操作符60
537使用逻辑操作符创建复杂的
测试表达式61
538操作符优先级62
54常量63
55小结64
56Q&A64
57实践练习64
第6章PHP的流程控制功能66
61转换流程66
611if语句66
612使用else子句的if语句67
613使用带有elseif子句的if语句67
614switch语句68
615使用?运算符69
62循环70
621while语句70
622do…while语句71
623for语句71
624用break语句跳出循环72
625用continue语句跳过迭代74
626嵌套循环74
63代码块和浏览器输出76
64小结77
65Q&A77
66实践练习77
第7章使用函数79
71什么是函数79
72调用函数79
73定义一个函数80
74从用户定义的函数返回值82
75变量作用域83
76使用static语句在函数调用之间
保存状态85
77关于参数的更多内容86
771为参数设置默认值87
772把变量引用传递给函数88
78测试函数是否存在89
79小结90
710Q&A90
711实践练习90
第8章使用数组92
81什么是数组92
82创建数组92
821创建关联数组93
822创建多维数组93
83一些和数组相关的函数95
84小结96
85Q&A96
86实践练习96
第9章使用对象98
91创建一个对象98
911对象的属性99
912对象方法100
913构造方法101
92对象继承102
93小结103
94Q&A103
95实践练习103
第三部分深入编程
第10章使用字符串、日期和时间105
101使用PHP格式化字符串105
1011使用printf()106
1012指定一个字段宽度108
1013参数交换111
1014存储一个格式化字符串111
102了解PHP中的字符串112
1021索引字符串的一个注意
事项112
1022使用strlen()获取一个字符
串的长度112
1023使用strstr()获取一个字符
串的子串112
1024使用strpos()找到一个子
字符串的位置113
1025使用substr()提取一个
字符串的一部分113
1026使用strtok()分解一个
字符串114
103在PHP中操作字符串115
1031使用trim()、ltrim()和
strip_tags()整理一个
字符串115
1032使用substr_replace()替换
一个字符串的一部分116
1033使用str_replace()替换
子字符串116
1034转换大小写117
1035使用wordwrap()和nl2br()
换行文本118
1036使用explode()把字符串
分解到数组119
104使用PHP中的日期和时间函数120
1041使用time()获取日期120
1042使用getdate()转换一个
时间戳120
1043使用date()转换一个
时间戳121
1044使用mktime()创建时间戳123
1045使用checkdate()测试日期124
105其他字符串、日期和时间函数124
106小结124
107Q&A124
108实践练习125
第11章使用表单126
111创建一个简单的输入表单126
112使用用户定义数组访问表单输入127
113在单个页面上组合HTML和
PHP代码129
114使用隐藏字段来保存状态131
115重定向用户132
116根据表单提交发送邮件133
1161mail()函数的系统配置133
1162创建表单134
1163创建发送邮件的脚本135
1164使用HTML格式化邮件137
117使用文件上传138
1171创建文件上传表单138
1172创建一个文件上传脚本139
118小结140
119实践练习140
第12章使用Cookie和用户会话142
121Cookie简介142
122使用PHP设置一个cookie143
123会话函数概览145
124开始一个会话145
125使用会话变量146
126在查询字符串中传递会话ID149
127销毁会话和重置变量149
128在一个带有注册用户的环境中
使用会话150
1281使用注册的用户150
1282使用用户偏好150
129小结150
1210Q&A151
1211实践练习151
第13章使用文件和目录152
131使用include()包含文件152
1311从一个被包含文档
返回一个值153
1312在控制结构中使用
include()153
1313使用include_once()154
1314include_path命令155
132验证文件155
1321使用file_exists()检查
存在性155
1322文件还是目录155
1323检查一个文件的状态156
1324使用filesize()确定文件
的大小156
1325获取有关一个文件的
日期信息156
1326编写一个执行多文件测试的
函数157
133创建并删除文件158
134打开一个文件供写入、读取或
添加159
135读取文件159
1351使用fgets()和feof()来
从一个文件读取行159
1352使用fread()函数从文件读取
任意数量的数据161
1353使用fgetc()从文件读取
字符162
136写入文件或向文件添加内容163
1361使用fwrite()或fputs()
写入文件163
1362使用flock()锁定文件164
137使用目录165
1371使用mkdir()创建目录165
1372使用rmdir()删除一个目录165
1373使用opendir()打开一个
目录以供读取165
1374使用readdir()从一个目录
读取内容165
138使用popen()打开到进程和
离开进程的管道167
139使用exec()运行命令168
1310使用system()或passthru()
运行命令170
1311小结171
1312Q&A171
1313实践练习171
第14章使用图像173
141理解图像创建过程173
142对PHP的必要修改173
143绘制一个新的图像174
1431绘制形状和线条174
1432使用颜色填充176
144绘制有趣的饼图177
145修改已有图像180
146来自用户输入的图像创建182
147小结185
148Q&A185
149实践练习185
第四部分PHP和MySQL整合
第15章理解数据库设计过程187
151良好的数据库设计的重要性187
152表关系的类型188
1521一对一关系188
1522一对多关系189
1523多对多关系189
153理解规范化190
1531平表带来的问题191
1532第一范式191
1533第二范式192
1534第三范式192
154遵从设计过程193
155小结193
156Q&A194
157实践练习194
第16章SQL基本命令195
161MySQL数据类型195
1611数字数据类型195
1612日期和时间类型196
1613字符串类型197
162表的创建语法197
163使用INSERT命令199
164使用SELECT命令199
1641排序SELECT结果200
1642限制结果201
165在查询中使用WHERE202
1651在WHERE子句中使用
操作符202
1652使用LIKE比较字符串203
166从多个表中查询203
1661使用JOIN205
1662使用子查询206
167使用UPDATE命令来修改记录207
1671条件式UPDATE208
1672在UPDATE中使用已有的
列值209
168使用REPLACE命令209
169使用DELETE命令210
1610MySQL中常用的字符串函数212
16101长度和连接函数212
16102截断和填充函数214
16103定位和位置函数215
16104子字符串函数215
16105字符串修改函数216
1611在MySQL中使用日期和时间
函数217
16111操作日期217
16112操作月份和年份219
16113操作周220
16114操作小时、分钟和秒221
16115使用MySQL格式化日期和
时间222
16116使用MySQL执行日期
算术224
16117特殊函数和转换函数225
1612小结227
1613Q&A228
1614实践练习228
第17章使用MySQL中的事务和
存储过程230
171什么是事务230
1711事务中使用的基本语法230
1712使用事务的例子231
172什么是存储过程232
173小结234
174实践练习234
第18章使用PHP和MySQL交互235
181MySQL函数和MySQLi函数235
182使用PHP连接MySQL235
1821进行连接235
1822执行查询236
1823获取错误消息237
183使用MySQL数据238
1831使用PHP插入数据238
1832使用PHP获取数据241
1833PHP中其他的MySQL函数242
184小结243
185实践练习243
第五部分基本项目
第19章管理一个简单的邮件列表245
191开发订阅机制245
1911创建subscribers表245
1912创建订阅表单246
192开发邮件发送机制250
193小结253
194Q&A253
195实践练习253
第20章创建一个在线地址簿255
201规划和创建数据库表255
202创建一个菜单257
203创建记录添加机制258
204浏览记录261
205创建记录删除机制267
206为一条记录添加子条目268
207小结273
208实践练习273
第21章创建一个简单的讨论论坛275
211设计数据库表275
212创建输入表单和脚本275
213显示主题列表279
214显示一个主题中的帖子281
215向主题添加帖子285
216小结287
217Q&A288
218实践练习288
第22章创建一个在线商店289
221规划和创建数据库表289
2211向store_categories表插入
记录290
2212向store_items表插入记录291
2213向store_item_size表中
插入记录291
2214向store_item_color表插入
记录292
222显示商品分类292
223显示商品295
224小结297
225实践练习297
第23章创建一个购物车机制298
231规划和创建数据库表298
232把购物车整合到商店299
2321把项目添加到购物车302
2322浏览购物车303
2323从购物车中删除项目304
233支付方法和结账过程306
2331创建结账页面306
2332执行结账操作306
234小结307
235实践练习307
第24章创建一个简单的日历308
241构建一个简单的显示日历308
2411检查用户输入308
2412构建HTML表单309
2413创建日历表格310
2414向日历添加事件313
242创建一个日历库319
243小结323
244Q&A324
245实践练习324
第25章限制对应用程序的访问325
251验证概览325
252Apache验证模块功能326
2521基于文件的验证327
2522基于数据库文件的访问
控制328
253使用Apache进行访问控制329
2531实现访问规则329
2532应用访问规则330
254组合Apache访问方法331
255根据HTTP方法限制访问331
256根据cookie值限制访问332
2561创建授权用户表332
2562创建登录表单和脚本333
2563测试auth cookie335
257小结336
258Q&A336
259实践练习337
第26章记录并监视Web服务器
活动338
261标准Apache访问日志338
2611确定记录什么338
2612记录对文件的访问340
2613记录对一个程序的访问341
262标准Apache错误日志341
2621把错误记录到一个文件342
2622把错误记录到一个程序342
2623syslog守护进程参数342
2624LogLevel指令342
263管理Apache日志343
2631解析主机名343
2632日志备份343
2633合并和分割日志343
2634日志分析344
2635监视错误日志344
264把自定义信息记录到一个数据库344
2641创建数据库表344
2642创建PHP代码段344
2643创建示例报表345
265小结347
266Q&A348
267实践练习348
第27章应用程序本地化349
271关于国际化和本地化349
272关于字符集349
273环境修改350
2731Apache的配置修改350
2732PHP的配置修改351
2733MySQL的配置修改351
274创建一个本地化页面结构351
275小结355
276Q&A355
277实践练习356
第28章使用XML357
281什么是XML357
282使用DOM函数在PHP中
访问XML358
283使用SimpleXML函数在PHP
中访问XML360
284小结363
285实践练习363
第六部分管理和优化
第29章Apache性能调校和
虚拟主机365
291可扩展性问题365
2911操作系统限制365
2912和性能相关的Apache设置366
292使用ApacheBench载入测试367
293预先性能调校369
2931把文件映射到内存369
2932分布负载369
2933缓存369
2934减少数据传输370
2935网络设置370
294防止滥用370
295实现虚拟主机371
2951基于IP的虚拟主机371
2952基于名字的虚拟主机372
2953大量虚拟主机373
296小结374
297Q&A374
298实践练习375
第30章建立一个安全的Web
服务器376
301安全性的需求376
302SSL协议376
3021解决保密性需求376
3022解决完整性的需求377
3023解决验证的需求378
303获取和安装SSL工具379
3031OpenSSL379
3032mod_ssl Apache模块380
304管理证书381
3041创建一个密钥对381
3042创建一个证书签发请求382
3043创建一个自签发的证书383
305SSL配置383
306小结384
307Q&A384
308实践练习384
第31章优化和调校MySQL385
311构建一个优化的平台385
312MySQL启动选项386
313优化表结构387
314优化你的查询388
315使用FLUSH命令388
316使用SHOW命令389
3161获取有关数据库和表的
信息390
3162获取表结构信息391
3163获取系统状态393
317小结393
318Q&A394
319实践练习394第32章软件升级395
321停留在循环中395
322升级MySQL396
323升级Apache396
324升级PHP397
325小结398
326实践练习398