
本书以逐步深入的方式介绍了3种重要的开源技术,它们组成了构建一个最活跃的Web站点所需要的基础。本书重点阐述了如何使用Apache Web服务
本书是一本实践教程,共12章,每一章都给出了器、MySQL数据库系统和PHP脚本语言一个实际应用的例子。这12个例子涵盖了当前Web应快速地创建一个专业的、功能丰富的站用中最流行的功能,包括用户登录、论坛管理、相册维护以及购物车等。书中的所有代码都可以在实际应点。在这个过程中,您可以切身体会到用中进行重用,以节省广大读者开发代码的精力和时间,并使得读者可以把精力集中于让自己的应用更加美观、更加丰富。由于本书是以可重用和可扩展作为原则进行编程的,因此读者可以很容易地对它们进行扩展,以添加自己喜欢的功能。此外,本书所采用的编程技巧以及开发理念也为读者提供了很多借鉴
和学习的地方。
前 言
欢迎阅读本书,这是创建动态网站的一本值得信赖的参考资料。目前有许多技术都可以发布优秀的网站,而Apache/MySQL/PHP(有时简称为AMP)就是其中的一个选择。读者过去可能用过也可能没有用过这3个组件,但无论如何,读者都将会感受到它们的强大。有了本书的帮助,读者很快就会明白为什么这个组合会迅速成为开发动态网站的最流行的方式。
Apache、MySQL和PHP本身都很复杂,本书不可能详细介绍这3个组件的所有高级功能。本书旨在为读者理解这3个核心组件如何单独工作和协同合作打下坚实的基础,使读者可以充分利用它们提供的所有功能。本书没有讨论一些高级主题,一方面,因为这有可能偏离我们的目标,使我们的讨论丧失重点,另一方面,也可能没有足够的篇幅来讨论它们。但本书给出了许多权威资料,读者可以从中得到更多的信息。本书的内容仅是Apache、MySQL、PHP的冰山一角,但提供了探讨其深层次内容的工具。读完本书后,读者就能全面理解高效开发人员使用Apache、MySQL、PHP所需要的核心概念,并且希望继续学习,成为真正的开发人员。
本书读者
阅读本书的读者需要对网站开发的概念有一定的理解,了解HTML和CSS的基本知识。除了PHP之外,其他编程语言的知识并不是阅读本书的前提条件,但有编程经验肯定有助于理解和应用本书介绍的概念。
本书面向Apache、MySQL、PHP方面的新手,从最基本的层面出发研究了许多核心概念和代码片段。随着自身的知识、级别和经验的增加,读者会发现完成相同的任务可能会有更复杂、更高效的方式。此时,读者就已经从Apache、MySQL、PHP的新手阶段进入到高手阶段了。
本书内容
本书讨论了如下主题:
● Apache、MySQL和PHP的安装和配置
● 介绍每个组件及组件之间的交互操作
● 收集网站访客的信息,并与他们交流
● 如何避免错误,以及在发生错误时如何处理它们
● 创建、修改和使用图像文件
● 处理用户的注册和登录
● 发送电子邮件,建立电子邮件列表
● 建立内容管理系统
● 添加电子商务功能来提升网站质量
● 在网站中添加论坛
● 使用活动日志和错误日志监控网站的健康状况
● 选择第三方Web主机提供程序
● 找到适合自己的文本编辑器
● 用多个界面从PHP连接到MySQL上
在阅读本书的各个章节,学习每个主题的过程中,读者将要创建两个完整的网站。第一个是电影评论站点,用来显示电影的信息及观众对其的评论。这个项目涵盖了许多基础知识,例如编写PHP代码,创建MySQL数据库,用数据填充数据库,显示访客希望看到的特定信息等。
第二个项目是漫画书迷网站,这个站点会在本书的后半部分开发,它合并了使用Apache、MySQL和PHP开发的复杂主题。读者将要创建一个真正的交互式网站,使访客可以与读者及网站的其他成员交流。
本书将一步步地引导读者开发这些网站,读者可以在学习了新概念后继续建立它们。但要注意,本书的每一章都是独立的,如果读者对某个主题不感兴趣,可以跳到下一章。
如果读者认为“小测验”已经过时,那就要三思而行了。本书的大多数章节末尾都提供了练习,来测试读者对所讨论的主题的掌握情况,并激励读者做进一步的思考。这些练习的答案在附录A中。
任何程序员都知道,软件总是在改进和调试。在使用Apache、MySQL和PHP的最新、最杰出的版本时,其实它们的推出时间并不长。所以,读者一定要访问每个组件的源网站,获得最新的版本和最近的发布信息。本书建议在使用Apache、MySQL和PHP开发网站时,一定要使用最新的、稳定的版本。使用旧软件版本或未经开发人员充分测试的版本,对应用程序而言是很危险的,可能会在代码中产生错误。
目前,最新的、稳定的版本是:
● PHP:6.0.0版本
● Apache:2.2.9版本
● MySQL:5.0.67
本书未来的版本会介绍这些程序的变化和改进。
使用本书的要求
本书适用于多个平台,其中的主题和讨论可用于Windows平台和Linux平台的机器。读者需要使用Apache、MySQL和PHP来完成本书中的练习。这3个软件都是开源的,读者可以免费下载和使用它们。本书的第1章和附录I提供了下载安装这3个组件的指导。
读者还需要一个文本编辑器来输入代码,这里可以使用多种编辑器,附录F列出了其中一些比较流行的编辑器。最后,还需要一个Web浏览器来浏览网页,如Mozilla Firefox、Internet Explorer、Google Chrome、Apple Safari或Opera。
源代码
在读者学习本书中的示例时,可以手工输入所有的代码,也可以使用本书附带的源代码文件。本书使用的所有源代码都可以从本书合作站点http://www.wrox.com/或www.tupwk.com.cn/downpage上下载。登录到站点http://www.wrox.com/,使用Search工具或使用书名列表就可以找到本书。接着单击本书细目页面上的Download Code链接,就可以获得所有的源代码。
注释:
由于许多图书的标题都很类似,所以按ISBN搜索是最简单的,本书英文版的ISBN是978-0-470-39114-3。
在下载了代码后,只需用自己喜欢的解压缩软件对它进行解压缩即可。另外,也可以进入http://www.wrox.com/dynamic/books/download.aspx上的Wrox代码下载主页,查看本书和其他Wrox图书的所有代码。
勘误表
尽管我们已经尽了各种努力来保证文章或代码中不出现错误,但是错误总是难免的,如果您在本书中找到了错误,例如拼写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免受挫,当然,这还有助于提供更高质量的信息。
请给wkservice@vip.163.com发电子邮件,我们就会检查您的反馈信息,如果是正确的,我们将在本书的后续版本中采用。
要在网站上找到本书英文版的勘误表,可以登录http://www.wrox.com,通过Search工具或书名列表查找本书,然后在本书的细目页面上,单击Book Errata链接。在链接到的页面上可以查看到Wrox编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是www.wrox.com/misc-pages/booklist.shtml。
P2P.WROX.COM
要与作者和同行讨论,请加入p2p.wrox.com上的P2P论坛。这个论坛是一个基于Web的系统,便于您张贴与Wrox图书相关的消息和技术,与其他读者和技术用户交流心得。该论坛提供了订阅功能,当论坛上有新的消息时,它可以给您传送感兴趣的论题。Wrox作者、编辑和其他业界专家和读者都会到这个论坛上来探讨问题。
在http://p2p.wrox.com上,有许多不同的论坛,它们不仅有助于阅读本书,还有助于开发自己的应用程序。要加入论坛,可以遵循下面的步骤:
(1) 进入p2p.wrox.com,单击Register链接。
(2) 阅读使用协议,并单击Agree按钮。
(3) 填写加入该论坛所需要的信息和自己希望提供的其他信息,单击Submit按钮。
(4) 您会收到一封电子邮件,其中的信息描述了如何验证账户,以完成加入过程。
注释:
不加入P2P也可以阅读论坛上的消息,但要张贴自己的消息,就必须加入该论坛。
加入论坛后,就可以张贴新消息,响应其他用户张贴的消息。可以随时在Web上阅读消息。如果要让该网站给自己发送特定论坛中的消息,可以单击论坛列表中该论坛名旁边的Subscribe to this Forum图标。
关于使用Wrox P2P的更多信息,可阅读P2P FAQ,以了解论坛软件的工作情况以及P2P和Wrox图书的许多常见问题。要阅读FAQ,可以在任意P2P页面上单击FAQ链接。
Web开发入门经典——使用PHP6、Apache和MySQL
目 录
第1章 配置安装 1
1.1 本书中的项目 1
1.2 Apache、MySQL、PHP和开放
源代码的简介 1
1.2.1 开源活动的简史 2
1.2.2 开源的优点 2
1.3 AMP中各个组件的协同工作 3
1.4 在Windows上安装Apache、
MySQL和PHP 4
1.4.1 安装Apache 4
1.4.2 安装PHP 7
1.4.3 把PHP配置为使用MySQL 8
1.4.4 安装MySQL 10
1.5 帮助和其他有价值的资源 14
1.5.1 程序中的帮助 14
1.5.2 源网站 14
1.6 小结 14
第2章 用PHP6创建PHP页面 15
2.1 PHP结构和语法概述 15
2.1.1 PHP与HTML的协同合作 16
2.1.2 PHP语法规则 16
2.1.3 编码实践的重要性 16
2.2 创建第一个程序 18
2.3 用HTML给页面添加趣味 21
2.3.1 集成HTML和PHP 21
2.3.2 把HTML放在PHP中
的考虑 22
2.4 用常量和变量添加功能 24
2.4.1 常量概述 24
2.4.2 变量概述 25
2.5 在页面之间传送变量 27
2.5.1 通过URL传送变量 27
2.5.2 在会话中传送变量 31
2.5.3 用cookie传送变量 34
2.5.4 用窗体传送信息 37
2.6 使用if/else参数 41
2.6.1 使用if语句 41
2.6.2 使用if和else 43
2.7 使用包含文件提高代码
的效率 44
2.8 用函数提高代码的效率 46
2.9 数组 51
2.9.1 数组的用法 52
2.9.2 数组的排序 53
2.9.3 foreach结构 54
2.10 while语句 59
2.11 PHP中的替代语法 63
2.11.1 echo命令的替代命令 63
2.11.2 逻辑运算符的替代 64
2.11.3 双引号的替代:使用
heredoc 64
2.11.4 递增/递减值的替代 64
2.12 OOP 65
2.12.1 类 65
2.12.2 属性和方法 66
2.12.3 使用OOP的原因 66
2.13 小结 66
2.14 练习 67
第3章 使用PHP和MySQL 69
3.1 MySQL结构和语法概述 69
3.1.1 MySQL结构 70
3.1.2 MySQL语法和命令 75
3.2 PHP和MySQL的联合使用 75
3.3 连接MySQL服务器 76
3.4 查看数据库 77
3.5 查询数据库 81
3.5.1 WHERE子句 82
3.5.2 使用PHP和数据数
组:foreach 84
3.5.3 两个表的处理 87
3.6 帮助提示和建议 90
3.6.1 帮助文档 90
3.6.2 使用MySQL查询浏览器 91
3.7 小结 92
3.8 练习 92
第4章 用表格显示数据 93
4.1 创建表格 93
4.2 等一下 97
4.3 确定主表 104
4.4 关系 111
4.5 小结 115
4.6 练习 115
第5章 表单元素:让用户处理数据 117
5.1 第一个表单 117
5.1.1 FORM元素 120
5.1.2 INPUT元素 120
5.1.3 处理表单 121
5.2 驱动用户输入 121
5.2.1 一个表单,多种处理 124
5.2.2 单选按钮INPUT元素 127
5.2.3 多个提交按钮 128
5.2.4 基本的输入测试 128
5.2.5 三元运算符 129
5.3 把表单链接在一起 130
5.4 小结 135
5.5 练习 135
第6章 让用户编辑数据库 137
6.1 准备战斗 137
6.2 在关系数据库中插入记录 139
6.3 删除记录 145
6.4 编辑记录中的数据 149
6.5 小结 156
6.6 练习 156
第7章 用PHP处理和创建图像 157
7.1 使用GD库 157
7.1.1 GD & PHP可以处理的
文件类型 157
7.1.2 在PHP中启用GD 158
7.2 允许用户上传图像 159
7.3 转换图像文件的类型 169
7.4 特殊效果 173
7.5 添加标题 182
7.6 添加水印和合并图像 189
7.7 创建小图标 192
7.8 小结 195
7.9 练习 195
第8章 验证用户的输入 197
8.1 用户就是用户 197
8.2 把验证部分合并到电影
站点中 197
8.3 忘记了什么吗 198
8.4 检查格式错误 206
8.5 小结 217
8.6 练习 218
第9章 处理和避免错误 219
9.1 Apache网络服务器处理错误
的方式 219
9.1.1 Apache的ErrorDocument
指令 219
9.1.2 Apache的ErrorDocument
指令:高级的定制错误
页面 223
9.2 用PHP处理错误和创建错误
处理页面 225
9.2.1 PHP中的错误类型 225
9.2.2 生成PHP错误 226
9.3 处理错误的其他方法 232
9.3.1 异常 232
9.3.2 不满足条件 234
9.3.3 解析错误 235
9.4 小结 235
9.5 练习 235
第10章 建立数据库 237
10.1 入门 237
10.1.1 什么是关系数据库 238
10.1.2 键 238
10.1.3 关系 239
10.1.4 引用完整性 239
10.1.5 规范化 240
10.2 设计数据库 240
10.2.1 创建第一个表 240
10.2.2 这些范式有多规范 244
10.2.3 标准化 244
10.2.4 完成数据库的设计 245
10.3 在MySQL中创建数据库 246
10.4 创建漫画人物应用程序 250
10.5 小结 282
10.6 练习 283
第11章 发送电子邮件 285
11.1 把PHP设置为使用电子
邮件 285
11.2 发送电子邮件 286
11.3 用HTML修饰电子邮件 290
11.4 存储图像 295
11.5 进行确认 297
11.6 创建可重用的邮件类 308
11.7 小结 317
11.8 练习 318
第12章 用户登录、配置和个性化 319
12.1 保护文件最简单的方法 319
12.2 使用PHP的会话和cookie
功能进行更友好的登录 322
12.3 使用数据库驱动的信息 325
12.3.1 在PHP中使用cookie 346
12.3.2 管理员注册 350
12.4 小结 361
12.5 练习 362
第13章 建立内容管理系统 363
13.1 刷新内容 363
13.2 设定规则 364
13.3 准备数据库 364
13.4 编写可重用的代码 368
13.5 事务处理页面 376
13.6 用户界面 388
13.6.1 一般功能 388
13.6.2 用户的管理 398
13.6.3 文章的发布 401
13.6.4 其他CMS功能 413
13.7 小结 419
13.8 练习 420
第14章 邮件列表 421
14.1 今天要发送什么 421
14.2 编写管理应用程序 422
14.3 加入邮件列表 437
14.4 邮件列表的道德规范 452
14.4.1 垃圾邮件 452
14.4.2 进入和退出邮件列表 452
14.5 小结 453
14.6 练习 453
第15章 在线商店 455
15.1 在漫画书迷站点上添加电子
商务功能 455
15.1.1 要卖的东西 456
15.1.2 购物篮 456
15.2 电子商务 497
15.2.1 信息就是一切 498
15.2.2 信用的重要性 498
15.2.3 专业化的外观 500
15.2.4 易于导航 500
15.2.5 有竞争力的价格 500
15.2.6 恰当的商品 501
15.2.7 及时送货 501
15.2.8 交流 501
15.2.9 顾客反馈 501
15.3 小结 502
15.4 练习 502
第16章 创建公告板系统 503
16.1 公告板 503
16.2 准备数据库 504
16.3 可重用的代码 510
16.3.1 分页 519
16.3.2 面包屑 523
16.3.3 用户的身份验证 524
16.4 事务处理页面 525
16.5 账户功能 538
16.6 论坛功能 551
16.6.1 公告板管理 554
16.6.2 论坛管理 556
16.6.3 BBcode管理 556
16.6.4 搜索 566
16.7 事后补记 567
16.8 小结 568
16.9 练习 568
第17章 用日志文件改进网站 569
17.1 定位日志 570
17.1.1 Apache 570
17.1.2 PHP 571
17.1.3 MySQL 572
17.2 分析日志数据 574
17.2.1 Webalizer 574
17.2.2 Analog 574
17.2.3 AWStats 575
17.2.4 HTTP Analyze 575
17.2.5 Google Analytics 576
17.3 进行分析 577
17.3.1 站点的健康状况 577
17.3.2 用户的喜好和信息 577
17.3.3 点击数和页面访问次数 577
17.3.4 趋势 578
17.3.5 引用网站 578
17.4 小结 578
第18章 排除故障 579
18.1 安装故障的排除 579
18.2 解析错误 579
18.2.1 清理第16行,但其实第
94行有错 580
18.2.2 基本常识 580
18.3 空变量 580
18.3.1 一致而有效的变量名 581
18.3.2 打开一个新浏览器 581
18.4 “标题已发送”错误 581
18.5 一般调试提示 582
18.5.1 使用echo 582
18.5.2 分而治之 583
18.5.3 测试、测试、再测试 584
18.5.4 用Xdebug调试 584
18.6 寻求帮助 584
18.6.1 www.wrox.com 584
18.6.2 PHPBuilder.com 584
18.6.3 源网站 584
18.6.4 搜索和求助 585
18.6.5 IRC通道 585
18.7 小结 585
附录A 习题答案 587
附录B PHP快速参考 625
附录C PHP6函数 633
附录D MySQL 数据类型 679
附录E MySQL快速参考 683
附录F 文本编辑器的比较 687
附录G 选择第三方主机 689
附录H PHP数据对象简介 693
附录I 在Linux上的安装和配置 699
Web开发入门经典——使用PHP6、Apache和MySQL