第一部分 基础知识 1
第1章 安装QuickStart向导 1
1.1 Linux/UNIX下的安装 1
安装MySQL 1
安装Apache 2
安装PHP 2
1.2 Windows下的安装 3
安装MySQL 3
安装Apache 4
安装PHP 5
1.3 Mac OS X下的安装 6
安装MySQL 6
安装PHP 8
1.4故障排除 9
第2章 安装和配置MySQL 10
2.1 MySQL的当前版本和未来版本 10
2.2如何获取MySQL 10
2.3在Linux/UNIX上安装MySQL 11
2.4在Mac OS X上安装MySQL 12
2.5在Windows上安装MySQL 13
2.6安装故障排除 17
2.7基本安全规则 17
启动MySQL 17
增强MySQL连接的安全 18
2.8 MySQL权限系统简介 18
2.9使用用户权限 19
添加用户 20
移除权限 21
2.10小结 21
2.11 Q&A 22
2.12实践练习 22
第3章 安装和配置Apache 23
3.1 Apache的当前版本及未来版本 23
3.2选择合适的安装方法 23
从源代码安装 24
安装一个二进制代码版本 24
3.3在Linux/UNIX上安装Apache 24
下载Apache源代码 24
解压源代码 24
准备编译Apache 25
编译和安装Apache 25
3.4在Mac OS X上安装Apache 26
3.5在Windows上安装Apache 26
3.6 Apache配置文件结构 27
指令 28
容器 28
条件评估 29
ServerRoot指令 30
per-directory配置文件 30
3.7 Apache日志文件 31
access_log文件 31
error_log文件 31
其他文件 32
3.8 Apache相关命令 32
Apache服务器二进制 32
Apache控制脚本 33
3.9第一次启动Apache 33
检查你的配置文件 33
启动Apache 34
3.10故障排除 34
已有Web服务器 34
不允许绑定到端口 34
拒绝访问 35
错误组设置 35
3.11小结 35
3.12 Q&A 35
3.13实践练习 35
第4章 安装和配置PHP 37
4.1 PHP的当前版本和未来版本 37
4.2在带有Apache的Linux/UNIX上编译PHP 37
额外的Linux/UNIX配置选项 39
在Linux/UNIX上整合PHP和Apache 39
4.3在Mac OS X上安装PHP 40
4.4在Windows上安装PHP 41
4.5 php.ini基础 42
4.6测试安装 42
4.7获取安装帮助 43
4.8 PHP脚本基础 44
开始和结束一个PHP语句块 44
echo语句和print()函数 45
组合HTML和PHP 46
为PHP代码添加注释 46
4.9小结 47
4.10 Q&A 48
4.11实践练习 48
第二部分 PHP语言结构 49
第5章 PHP的组成部分 49
5.1变量 49
5.2数据类型 51
使用settype()来改变类型 53
通过类型转换改变类型 54
为何测试类型 55
5.3操作符和表达式 56
赋值操作符 56
算术操作符 56
连接操作符 57
复合赋值操作符 57
自动增加和减少一个整型变量 58
比较操作符 59
使用逻辑操作符创建复杂的测试表达式 59
操作符优先级 60
5.4常量 61
5.5小结 62
5.6 Q&A 62
5.7实践练习 63
第6章 PHP的流程控制功能 65
6.1转换流程 65
if语句 65
一起使用else子句与if语句 66
一起使用elseif子句与if语句 67
switch语句 68
使用?运算符 69
6.2循环 69
while语句 70
do...while语句 70
for语句 71
用break语句跳出循环 72
用continue语句跳过迭代 74
嵌套循环 74
6.3代码块和浏览器输出 76
6.4小结 77
6.5 Q&A 77
6.6实践练习 77
第7章 使用函数 79
7.1什么是函数 79
7.2调用函数 79
7.3定义一个函数 80
7.4从用户定义的函数返回值 82
7.5变量作用域 83
7.6使用static语句保存函数调用之间的状态 85
7.7关于参数的更多内容 86
为参数设置默认值 86
把变量引用传递给函数 87
7.8测试函数是否存在 88
7.9小结 90
7.10 Q&A 90
7.11实践练习 90
第8章 使用数组 92
8.1什么是数组 92
8.2创建数组 92
创建关联数组 93
创建多维数组 94
8.3一些和数组相关的函数 95
8.4小结 96
8.5 Q&A 96
8.6实践练习 96
第9章 使用对象 98
9.1创建一个对象 98
对象的属性 99
对象方法 100
构造方法 102
9.2对象继承 102
9.3小结 104
9.4 Q&A 104
9.5实践练习 104
第三部分 深入编程 105
第10章 使用字符串、日期和时间 105
10.1使用PHP格式化字符串 105
使用printf() 106
指定一个字段宽度 108
参数交换 110
存储一个格式化字符串 111
10.2了解PHP中的字符串 112
索引字符串的一个注意事项 112
使用strlen()获取一个字符串的长度 112
使用strstr()获取一个字符串的子串 112
使用strpos()找到一个子字符串的位置 113
使用substr()提取一个字符串的一部分 113
使用strtok()分解一个字符串 114
10.3在PHP中操作字符串 115
使用trim()、Itrim()和strip_tags()整理一个字符串 115
使用substr_replace()替换一个字符串的一部分 116
使用str_replace()替换子字符串 117
转换大小写 117
使用wordwrap()和nl 2br()换行文本 118
使用explode()把字符串分解到数组 120
10.4在PHP中使用日期和时间函数 120
使用time()获取日期 120
使用getdate()转换一个时间戳 121
使用date()转换一个时间戳 121
使用mktime()创建时间戳 123
使用checkdate()测试日期 124
10.5其他字符串、日期和时间函数 124
10.6小结 124
10.7 Q&A 125
10.8实践练习 125
第11章 使用表单 127
11.1创建一个简单的输入表单 127
11.2使用用户定义数组访问表单输入 128
11.3在单个页面上组合HTML和PHP代码 130
11.4使用隐藏字段来保存状态 132
11.5重定向用户 133
11.6根据表单提交发送邮件 135
mail()函数的系统配置 135
创建表单 135
创建发送邮件的脚本 136
使用HTML格式化邮件 137
11.7使用文件上传 139
创建文件上传表单 139
创建文件上传脚本 140
11.8小结 141
11.9实践练习 142
第12章 使用Cookie和用户会话 143
12.1 Cookie简介 143
深入了解一个Cookie 143
访问Cookie 144
12.2使用PHP设置一个cookie 144
12.3使用PHP删除一个cookie 146
12.4会话函数概览 146
12.5开始一个会话 146
12.6使用会话变量 147
12.7在查询字符串中传递会话ID 150
12.8销毁会话和重置变量 151
12.9在一个带有注册用户的环境中使用会话 151
使用注册的用户 151
使用用户偏好 152
12.10小结 152
12.11 Q&A 152
12.12实践练习 153
第13章 使用文件和目录 154
13.1使用include()包含文件 154
从一个被包含文档返回一个值 155
在控制结构中使用include() 156
使用include_once() 156
include_path命令 157
13.2验证文件 157
使用file_exists()检查存在性 157
文件还是目录 158
检查一个文件的状态 158
使用filesize()确定文件的大小 158
获取有关一个文件的日期信息 159
编写一个执行多文件测试的函数 159
13.3创建并删除文件 161
13.4打开一个文件供写入、读取或添加 161
13.5读取文件 162
使用fgets()和feof()来从一个文件读取行 162
使用fread()函数从文件读取任意数量的数据 163
使用fgetc()从文件读取字符 164
13.6写入文件或向文件添加内容 165
使用fwrite()或fputs()写入文件 166
使用flock()锁定文件 166
13.7使用目录 167
使用mkdir()创建目录 167
使用rmdir()删除一个目录 167
使用opendir()打开一个目录以供读取 167
使用readdir()从一个目录读取内容 168
13.8使用popen()打开到进程和离开进程的管道 169
13.9使用exec()运行命令 171
13.10使用system()或passthru()运行命令 172
13.11小结 173
13.12 Q&A 173
13.13实践练习 174
第14章 使用图像 175
14.1理解图像创建过程 175
14.2对PHP的必要修改 175
14.3绘制一个新的图像 176
绘制形状和线条 177
使用颜色填充 178
14.4绘制有趣的饼图 179
14.5修改已有图像 182
14.6来自用户输入的图像创建 184
14.7使用脚本创建的图像 187
14.8小结 189
14.9 Q&A 189
14.10实践练习 190
第四部分 PHP和MySQL整合 191
第15章 理解数据库设计过程 191
15.1良好的数据库设计的重要性 191
15.2表关系的类型 192
一对一关系 192
一对多关系 192
多对多关系 193
15.3理解规范化 194
平表带来的问题 194
第一范式 195
第二范式 195
第三范式 195
15.4遵从设计过程 196
15.5小结 197
15.6 Q&A 197
15.7实践练习 197
第16章 SQL基本命令 198
16.1 MySQL数据类型 198
数字数据类型 198
日期和时间类型 199
字符串类型 200
16.2表的创建语法 200
16.3使用INSERT命令 201
16.4使用SELECT命令 202
排序SELECT结果 203
限制结果 204
16.5在查询中使用WHERE 205
在WHERE子句中使用操作符 205
使用LIKE比较字符串 206
16.6从多个表中查询 206
使用JOIN 208
使用子查询 210
16.7使用UPDATE命令来修改记录 211
条件式UPDATE 212
在UPDATE中使用已有的列值 213
16.8使用REPLACE命令 214
16.9使用DELETE命令 214
16.10 MySQL中常用的字符串函数 216
长度和连接函数 216
截断和填充函数 218
定位和位置函数 220
子字符串函数 221
字符串修改函数 221
16.11在MySQL中使用日期和时间函数 223
操作日期 223
操作月份和年份 225
操作周 226
操作小时、分钟和秒 227
使用MySQL格式化日期和时间 228
使用MySQL执行日期算术 230
特殊函数和转换函数 232
16.12小结 233
16.13 Q&A 234
16.14实践练习 235
第17章 使用MySQL中的事务和存储过程 237
17.1什么是事务 237
事务中使用的基本语法 237
使用事务的例子 238
17.2什么是存储过程 240
17.3小结 241
17.4 Q&A 241
17.5实践练习 241
第18章 使用PHP和MySQL交互 242
18.1 MySQL函数和MySQLi函数 242
18.2使用PHP连接MySQL 242
进行连接 242
执行查询 243
获取错消息 245
18.3使用MySQL数据 245
使用PHP插入数据 245
使用PHP获取数据 247
PHP中其他的MySQL函数 249
18.4小结 249
18.5 Q&A 250
18.6实践练习 250
第五部分 基本项目 251
第19章 管理一个简单的邮件列表 251
19.1开发订阅机制 251
创建subscribers表 251
为共同函数创建一个包含文件 252
创建订阅表单 253
19.2开发邮件发送机制 257
19.3小结 259
19.4 Q&A 260
19.5实践练习 260
第20章 创建一个在线地址簿 261
20.1规划和创建数据库表 261
20.2为共同函数创建一个包含文件 263
20.3创建一个菜单 264
20.4创建记录添加机制 265
20.5浏览记录 269
20.6创建记录删除机制 274
20.7为一条记录添加子条目 276
20.8小结 282
20.9 Q&A 282
20.10实践练习 282
第21章 创建一个简单的讨论论坛 284
21.1设计数据库表 284
21.2为共同函数创建一个包含文件 285
21.3创建输入表单和脚本 285
21.4显示主题列表 288
21.5显示一个主题中的帖子 290
21.6向主题添加帖子 294
21.7小结 297
21.8 Q&A 297
21.9实践练习 297
第22章 创建一个在线商店 299
22.1规划和创建数据库表 299
向store_ategories表插入记录 301
向store_items表插入记录 301
向store_item_size表中插入记录 302
向store_item_color表插入记录 302
22.2显示商品分类 303
22.3显示商品 305
22.4小结 308
22.5实践练习 308
22.6 Q&A 308
第23章 创建一个购物车机制 309
23.1规划和创建数据库表 309
23.2把购物车整合到商店 310
把项目添加到购物车 313
浏览购物车 314
从购物车中删除项目 317
23.3支付方法和结账过程 317
创建结账页面 318
执行结账操作 318
23.4小结 319
23.5实践练习 319
第24章 创建一个简单的日历 320
24.1构建一个简单的显示日历 320
检查用户输入 320
构建HTML表单 321
创建日历表格 323
向日历添加事件 325
24.2创建一个日历库 332
24.3小结 337
24.4 Q&A 338
24.5实践练习 338
第25章 限制对应用程序的访问 339
25.1验证概览 339
25.2 Apache验证模块功能 340
基于文件的验证 341
基于数据库文件的访问控制 342
25.3使用Apache进行访问控制 343
实现访问规则 343
应用访问规则 344
25.4组合Apache访问方法 345
25.5根据HTTP方法限制访问 346
25.6根据cookie值限制访问 346
创建授权用户表 346
创建登录表单和脚本 347
测试auth cookie 350
25.7小结 351
25.8 Q&A 351
25.9实践练习 351
第26章 记录并监视Web服务器活动 353
26.1标准Apache访问日志 353
确定记录什么 353
记录对文件的访问 355
记录对一个程序的访问 356
26.2标准Apache错误日志 356
把错误记录到一个文件 357
把错误记录到一个程序 357
syslog守护进程参数 357
LogLevel指令 357
26.3管理Apache日志 358
解析主机名 358
日志备份 358
合并和分割日志 358
日志分析 359
监视错误日志 359
26.4把自定义信息记录到一个数据库 359
创建数据库表 359
创建PHP代码段 360
创建示例报表 360
26.5小结 363
26.6 Q&A 363
26.7实践练习 363
第27章 应用程序本地化 365
27.1关于国际化和本地化 365
27.2关于字符集 365
27.3环境修改 366
Apache的配置修改 366
PHP的配置修改 367
MySQL的配置修改 367
27.4创建一个本地化页面结构 367
27.5小结 372
27.6 Q&A 372
27.7实践练习 372
第28章 使用XML 373
28.1什么是XML 373
基本XML文档结构 373
何时应该使用XML和PHP 374
28.2使用DOM函数在PHP中访问XML 375
28.3使用SimpleXML函数在PHP中 377
访问XML 377
28.4小结 379
28.5 Q&A 380
28.6实践练习 380
第六部分 管理和优化 381
第29章 Apache性能调校和虚拟主机 381
29.1可扩展性问题 381
操作系统限制 381
和性能相关的Apache设置 382
29.2使用ApacheBench载入测试 384
29.3预先性能调校 385
把文件映射到内存 385
分布负载 385
缓存 386
减少数据传输 386
网络设置 386
29.4防止滥用 386
29.5实现虚拟主机 387
基于IP的虚拟主机 387
基于名字的虚拟主机 388
大量虚拟主机 390
29.6小结 390
29.7 Q&A 391
29.8实践练习 391
第30章 建立一个安全的Web服务器 393
30.1安全性的需求 393
30.2 SSL协议 393
解决保密性需求 393
解决完整性的需求 394
解决验证的需求 395
30.3获取和安装SSL工具 396
OpenSSL 396
mod_ssl Apache模块 397
30.4管理证书 398
创建一个密钥对 398
创建一个证书签发请求 399
创建一个自签发的证书 400
30.5 SSL配置 400
30.6小结 401
30.7 Q&A 401
30.8实践练习 401
第31章 优化和调校MySQL 402
31.1构建一个优化的平台 402
31.2 MySQL启动选项 403
31.3优化表结构 404
31.4优化你的查询 405
31.5使用FLUSH命令 406
31.6使用SHOW命令 407
获取有关数据库和表的信息 407
获取表结构信息 408
获取系统状态 410
31.7小结 411
31.8 Q&A 411
31.9实践练习 412
第32章 软件升级 413
32.1停留在循环中 413
32.2升级MySQL 414
32.3升级Apache 414
32.4升级PHP 415
32.5小结 416
32.6实践练习 416