第1 章 PHP 概述 1
1.1 历史 1
1.1.1 PHP 4 2
1.1.2 PHP 5 3
1.1.3 PHP 5.3 4
1.1.4 PHP 6 4
1.2 一般语言特性 4
1.2.1 实用性 4
1.2.2 强大功能 5
1.2.3 可选择性 5
1.2.4 成本 6
1.3 小结 6
第2 章 环境配置 7
2.1 安装的前提条件 7
2.1.1 下载Apache 8
2.1.2 下载PHP 8
2.1.3 下载文档 9
2.2 在Linux 上安装Apache 和PHP 9
2.3 在Windows 上安装Apache 和PHP 11
2.4 在Windows 上安装IIS 和PHP 12
2.5 测试安装 13
2.6 配置PHP 14
2.6.1 在Linux 上构建时配置PHP 14
2.6.2 定制Windows 构建 15
2.7 运行时配置 15
2.7.1 管理PHP 的配置指令 15
2.7.2 PHP 的配置指令 17
2.8 选择代码编辑器 28
2.8.1 Adobe Dreamweaver CS5 28
2.8.2 Notepad++ 28
2.8.3 PDT 28
2.8.4 Zend Studio 29
2.9 选择Web 托管服务提供商 29
2.10 小结 30
第3 章 PHP 基础 31
3.1 在Web 页面中嵌入PHP 代码 31
3.1.1 默认语法 31
3.1.2 短标签 32
3.1.3 脚本 33
3.1.4 ASP 风格 33
3.1.5 嵌入多个代码块 33
3.2 为代码添加注释 33
3.2.1 单行C++语法 33
3.2.2 shell 语法 34
3.2.3 多行C 语法 34
3.3 向浏览器输出数据 35
3.3.1 print()语句 35
3.3.2 echo()语句 35
3.3.3 printf()语句 36
3.3.4 sprintf() 37
3.4 PHP 支持的数据类型 37
3.4.1 标量数据类型 38
3.4.2 复合数据类型 39
3.4.3 使用类型强制转换实现数据类型间的转换 40
3.4.4 类型自动转换 41
3.4.5 与类型有关的函数 41
3.4.6 类型标识符函数 42
3.5 标识符 42
3.6 变量 43
3.6.1 变量声明 43
3.6.2 变量作用域 44
3.6.3 PHP 的超级全局变量 47
3.6.4 变量的变量 50
3.7 常量 51
3.8 表达式 51
3.8.1 操作数 52
3.8.2 操作符 52
3.9 字符串插入 56
3.9.1 双引号 57
3.9.2 转义序列 57
3.9.3 单引号 58
3.9.4 大括号 58
3.9.5 heredoc 58
3.9.6 Nowdoc 59
3.10 控制结构 59
3.10.1 条件语句 59
3.10.2 循环语句 61
3.10.3 文件包含语句 65
3.11 小结 67
第4 章 函数 68
4.1 调用函数 68
4.2 创建函数 69
4.2.1 按值传递参数 69
4.2.2 按引用传递参数 70
4.2.3 默认参数值 71
4.2.4 使用类型提示 72
4.2.5 从函数返回值 72
4.2.6 递归函数 73
4.3 函数库 75
4.4 小结 76
第5 章 数组 77
5.1 什么是数组 77
5.2 创建数组 78
5.2.1 用array()创建数组 79
5.2.2 用list()提取数组 79
5.2.3 用预定义的值范围填充数组 80
5.2.4 测试数组 81
5.3 输出数组 81
5.4 添加和删除数组元素 82
5.4.1 在数组头添加元素 83
5.4.2 在数组尾添加元素 83
5.4.3 从数组头删除元素 83
5.4.4 从数组尾删除元素 83
5.5 定位数组元素 84
5.5.1 搜索数组 84
5.5.2 获取数组键 85
5.5.3 获取数组值 85
5.6 遍历数组 85
5.6.1 获取当前数组键 86
5.6.2 获取当前数组值 86
5.6.3 获取当前数组键和值 86
5.6.4 移动数组指针 87
5.6.5 向函数传递数组值 87
5.7 确定数组的大小和唯一性 88
5.7.1 确定数组的大小 89
5.7.2 统计数组元素出现的频度 89
5.7.3 确定唯一的数组元素 89
5.8 数组排序 90
5.8.1 逆置数组元素顺序 90
5.8.2 置换数组键和值 90
5.8.3 数组排序 91
5.9 合并、拆分、接合和分解数组 95
5.9.1 合并数组 95
5.9.2 递归追加数组 95
5.9.3 合并两个数组 96
5.9.4 拆分数组 96
5.9.5 接合数组 97
5.9.6 求数组的交集 98
5.9.7 求关联数组的交集 98
5.9.8 求数组的差集 99
5.9.9 求关联数组的差集 99
5.10 其他有用的数组函数 100
5.10.1 返回一组随机的键 100
5.10.2 随机洗牌数组元素 100
5.11 小结 102
第6 章 面向对象的PHP 103
6.1 OOP 的好处 103
6.1.1 封装 103
6.1.2 继承 104
6.1.3 多态 104
6.2 关键的OOP 概念 104
6.2.1 类 104
6.2.2 对象 105
6.2.3 属性 106
6.2.4 常量 110
6.2.5 方法 111
6.3 构造函数和析构函数 114
6.3.1 构造函数 114
6.3.2 析构函数 116
6.4 静态类成员 117
6.5 instanceof 关键字 118
6.6 辅助函数 118
6.7 自动加载对象 120
6.8 小结 120
第7 章 高级OOP 特性 121
7.1 PHP 不支持的高级OOP 特性 121
7.2 对象克隆 122
7.2.1 克隆示例 122
7.2.2 __clone()方法 123
7.3 继承 124
7.3.1 类继承 124
7.3.2 继承和构造函数 126
7.3.3 继承与延迟静态绑定 127
7.4 接口 128
7.4.1 实现一个接口 129
7.4.2 实现多个接口 130
7.5 抽象类 131
7.6 命名空间介绍 131
7.7 小结 133
第8 章 错误和异常处理 134
8.1 配置指令 134
8.2 错误日志 137
8.3 异常处理 139
8.3.1 为什么异常处理很方便 139
8.3.2 PHP 的异常处理实现 140
8.3.3 SPL 异常 144
8.4 小结 145
第9 章 字符串和正则表达式 146
9.1 正则表达式 146
9.1.1 正则表达式语法(POSIX) 147
9.1.2 PHP 的正则表达式函数(POSIX扩展) 148
9.1.3 正则表达式语法(Perl 风格) 151
9.2 其他字符串函数 157
9.2.1 确定字符串长度 157
9.2.2 比较两个字符串 158
9.2.3 处理字符串大小写 159
9.2.4 字符串与HTML 相互转换 161
9.3 正则表达式函数的替代函数 165
9.3.1 填充和剔除字符串 170
9.3.2 统计字符和单词个数 171
9.4 使用PEAR:Validate_US 173
9.4.1 安装Validate_US 174
9.4.2 使用Validate_US 174
9.5 小结 175
第10 章 处理文件和操作系统 176
10.1 了 解文件和目录 176
10.1.1 解析目录路径 176
10.1.2 计算文件、目录和磁盘大小 178
10.1.3 确定访问和修改时间 180
10.2 文件处理 182
10.2.1 资源的概念 182
10.2.2 识别换行符 182
10.2.3 识别文件末尾字符 182
10.2.4 打开和关闭文件 182
10.2.5 读取文件 184
10.2.6 将字符串写入文件 189
10.2.7 移动文件指针 189
10.2.8 读取目录内容 190
10.3 执行shell 命令 191
10.4 系统级程序执行 192
10.4.1 清理输入 193
10.4.2 PHP 的程序执行函数 194
10.5 小结 196
第11 章 PEAR 197
11.1 PEAR 的强大功能:数值格式转换 197
11.2 安装和更新PEAR 198
11.2.1 安装PEAR 198
11.2.2 PEAR 和托管公司 199
11.2.3 更新PEAR 200
11.3 使用PEAR 包管理器 200
11.3.1 查看安装的PEAR 包 200
11.3.2 了解已安装PEAR 包的更多信息 200
11.3.3 安装PEAR 包 201
11.3.4 将包包含到脚本中 202
11.3.5 升级PEAR 包 203
11.3.6 卸载包 203
11.3.7 降级PEAR 包 204
11.4 Pyrus 介绍 204
11.5 小结 204
第12 章 日期和时间 205
12.1 UNIX 时间戳 205
12.2 PHP 的日期和时间库 206
12.2.1 验证日期 206
12.2.2 格式化日期和时间 206
12.2.3 将时间戳转换为用户友好的值 209
12.2.4 处理时间戳 210
12.3 日期函数 211
12.3.1 显示本地化的日期和时间 211
12.3.2 显示网页的最新修改日期 214
12.3.3 确定当前月份中的天数 214
12.3.4 确定任意给定月份的天数 215
12.3.5 计算当前日期后X 天的日期 215
12.4 为PHP 5.1+用户提供的日期时间改进 215
12.4.1 DateTime 构造函数简介 215
12.4.2 格式化日期 216
12.4.3 实例化后设置日期 216
12.4.4 实例化后设置时间 217
12.4.5 修改日期和时间 217
12.4.6 计算两个日期之差 217
12.5 小结 218
第13 章 处理HTML 表单 219
13.1 PHP 和Web 表单 219
13.2 验证表单数据 221
13.2.1 文件删除 221
13.2.2 跨站点脚本攻击 221
13.2.3 清理用户输入 223
13.2.4 利用Filter 扩展验证和清理数据 225
13.2.5 处理多值表单组件 226
13.3 充分利用PEAR:HTML_QuickForm2 227
13.3.1 安装HTML_QuickForm2 227
13.3.2 创建和验证简单的表单 228
13.4 小结 230
第14 章 身份验证 231
14.1 HTTP 验证概念 231
14.2 用PHP 验证用户 233
14.2.1 PHP 验证变量 233
14.2.2 有用的函数 233
14.3 PHP 验证方法 234
14.3.1 硬编码的身份验证 234
14.3.2 基于文件的身份验证 235
14.3.3 基于数据库的身份验证 236
14.3.4 利用PEAR:Auth_HTTP 237
14.4 用户登录管理 239
14.4.1 用CrackLib 库测试密码易猜性 239
14.4.2 一次性URL 和密码恢复 241
14.5 小结 243
第15 章 处理文件上传 244
15.1 通过HTTP 协议上传文件 244
15.2 通过PHP 上传文件 245
15.2.1 PHP 的文件上传/资源指令 245
15.2.2 $_FILES 数组 246
15.2.3 PHP 的文件上传函数 247
15.2.4 上传错误消息 248
15.2.5 一个简单的示例 248
15.3 利用PEAR:HTTP_Upload 249
15.3.1 安装HTTP_Upload 249
15.3.2 上传文件 250
15.3.3 了解关于已上传文件的更多信息 250
15.3.4 上传多个文件 251
15.4 小结 252
第16 章 网络 253
16.1 DNS、服务器和服务 253
16.1.1 DNS 253
16.1.2 服务 257
16.1.3 建立套接字连接 257
16.2 邮件 259
16.2.1 配置指令 259
16.2.2 使用PHP 脚本发送电子邮件 260
16.3 常见网络任务 264
16.3.1 连接服务器 264
16.3.2 创建端口扫描器 265
16.3.3 创建子网转换器 265
16.3.4 测试用户带宽 267
16.4 小结 267
第17 章 PHP 和LDAP 268
17.1 在PHP 中使用LDAP 269
17.1.1 为PHP 配置LDAP 269
17.1.2 连接到LDAP 服务器 269
17.1.3 获取LDAP 数据 271
17.1.4 统计所获取的项 274
17.1.5 LDAP 记录排序 274
17.1.6 插入LDAP 数据 275
17.1.7 更新LDAP 数据 276
17.1.8 删除LDAP 数据 276
17.1.9 处理区分名 277
17.1.10 错误处理 278
17.2 小结 279
第18 章 会话处理程序 280
18.1 什么是会话处理 280
18.2 配置指令 281
18.2.1 管理会话存储介质 281
18.2.2 设置会话文件路径 281
18.2.3 自动启用会话 282
18.2.4 设置会话名称 282
18.2.5 选择cookie 或URL 重写 282
18.2.6 自动URL 重写 282
18.2.7 设置会话cookie 的生存期 283
18.2.8 设置会话cookie 的有效URL 路径 283
18.2.9 为启用会话的页面设置缓存方向 283
18.3 处理会话 284
18.3.1 开始会话 284
18.3.2 销毁会话 285
18.3.3 设置和获取会话ID 285
18.3.4 创建和删除会话变量 285
18.3.5 编码和解码会话数据 286
18.4 实际的会话处理示例 288
18.4.1 以返回用户的身份自动登录 288
18.4.2 生成最近浏览文档的索引 290
18.5 创建定制会话处理程序 291
18.5.1 将定制会话函数加入到PHP 逻辑 292
18.5.2 使用基于MySQL 的定制会话处理程序 292
18.6 小结 295
第19 章 用Smarty 模板化 296
19.1 什么是模板化引擎 296
19.2 Smarty 介绍 298
19.3 安装Smarty 298
19.4 使用Smarty 299
19.5 Smarty 的表现逻辑 301
19.5.1 注释 301
19.5.2 变量修饰符 301
19.5.3 控制结构 303
19.5.4 语句 307
19.6 创建配置文件 309
19.6.1 config_load 309
19.6.2 引用配置变量 310
19.7 结合Smarty 使用CSS 310
19.8 缓存 311
19.8.1 处理缓存生命期 311
19.8.2 通过is_cached()消除处理开销 312
19.8.3 为每个模板创建多个缓存 312
19.8.4 关于缓存的结束语 313
19.9 小结 313
第20 章 Web 服务 314
20.1 为什么使用Web 服务 314
20.2 RSS 315
20.3 SimplePie 介绍 318
20.3.1 安装SimplePie 318
20.3.2 用SimplePie 解析提要 319
20.3.3 解析多个提要 320
20.4 SimpleXML 321
20.4.1 加载XML 321
20.4.2 解析XML 323
20.5 小结 325
第21 章 保护网站安全 326
21.1 安全地配置PHP 326
21.2 隐藏配置细节 328
21.2.1 隐藏Apache 328
21.2.2 隐藏PHP 329
21.3 隐藏敏感数据 330
21.3.1 隐藏文档根目录 330
21.3.2 拒绝访问某些文件扩展名 330
21.4 数据加密 331
21.4.1 PHP 的加密函数 331
21.4.2 MCrypt 包 332
21.5 小结 333
第22 章 用jQuery 和PHP 创建AJAX增强特性 334
22.1 AJAX 介绍 334
22.2 jQuery 介绍 335
22.2.1 安装jQuery 336
22.2.2 一个简单示例 336
22.2.3 响应事件 336
22.2.4 jQuery 和DOM 338
22.3 创建一个用户名存在性验证程序 339
22.4 小结 342
第23 章 构建面向全世界的网站 343
23.1 用gettext 翻译网站 343
23.1.1 第一步:更新网站脚本 344
23.1.2 第二步:创建本地化库 345
23.1.3 第三步:创建翻译文件 345
23.1.4 第四步:翻译文本 346
23.1.5 第五步:生成二进制文件 346
23.1.6 第六步:在脚本中设置所需语言 346
23.2 本地化日期、数字和时间 347
23.3 小结 348
第24 章 Zend 框架介绍 349
24.1 MVC 介绍 349
24.2 PHP 的框架解决方案 351
24.2.1 CakePHP 框架 351
24.2.2 Solar 框架 351
24.2.3 symfony 框架 352
24.2.4 Zend 框架 352
24.3 Zend 框架介绍 352
24.3.1 安装Zend 框架 353
24.3.2 创建第一个Zend 框架驱动的网站 353
24.4 小结 363
第25 章 MySQL 介绍 364
25.1 是什么让MySQL 如此流行 364
25.1.1 灵活性 364
25.1.2 强大功能 365
25.1.3 灵活的许可选择 366
25.1.4 超级活跃的用户群体 367
25.2 MySQL 的演进 367
25.2.1 MySQL 4 367
25.2.2 MySQL 5 368
25.2.3 MySQL 5.1 368
25.2.4 MySQL 5.4 和5.5 369
25.3 著名的MySQL 用户 369
25.3.1 craigslist 369
25.3.2 维基百科 369
25.3.3 其他重要用户 369
25.4 小结 370
第26 章 安装和配置MySQL 371
26.1 下载MySQL 371
26.2 安装MySQL 372
26.2.1 在Linux 上安装MySQL 372
26.2.2 在Windows 上安装并配置MySQL 374
26.3 设置MySQL 管理员密码 376
26.4 启动和停止MySQL 376
26.5 配置和优化MySQL 377
26.5.1 mysqld_safe 包装程序 378
26.5.2 MySQL 的参数配置和优化 378
26.5.3 my.cnf 文件 381
26.6 配置PHP 以便与MySQL 协作 382
26.6.1 在Linux 上重新配置PHP 382
26.6.2 在Windows 上重新配置PHP 383
26.7 小结 383
第27 章 MySQL 客户端 384
27.1 命令行客户端介绍 384
27.1.1 mysql 客户端 384
27.1.2 mysqladmin 客户端 391
27.1.3 其他有用的客户端 392
27.1.4 客户端选项 395
27.2 MySQL 的GUI 客户程序 397
27.3 phpMyAdmin 398
27.4 小结 399
第28 章 MySQL 存储引擎和数据类型 400
28.1 存储引擎 400
28.1.1 MyISAM 401
28.1.2 IBMDB2I 402
28.1.3 InnoDB 403
28.1.4 MEMORY 403
28.1.5 MERGE 404
28.1.6 FEDERATED 404
28.1.7 ARCHIVE 405
28.1.8 CSV 406
28.1.9 EXAMPLE 406
28.1.10 BLACKHOLE 406
28.1.11 存储引擎的常见问题 406
28.2 数据类型和属性 407
28.2.1 数据类型 407
28.2.2 数据类型属性 411
28.3 处理数据库和表 414
28.3.1 处理数据库 414
28.3.2 处理表 415
28.3.3 更改表结构 417
28.3.4 INFORMATION_SCHEMA 417
28.4 小结 420
第29 章 保护MySQL 的安全 421
29.1 首先应当做什么 421
29.2 保护mysqld 守护进程 422
29.3 MySQL 访问权限系统 423
29.3.1 权限系统的工作方式 423
29.3.2 访问信息存储在哪里 424
29.4 用户和权限管理 431
29.4.1 创建用户 432
29.4.2 删除用户 432
29.4.3 重命名用户 432
29.4.4 GRANT 和REVOKE 命令 432
29.4.5 查看权限 437
29.5 限制用户资源 437
29.6 保护MySQL 连接 437
29.6.1 授权选项 438
29.6.2 SSL 选项 439
29.6.3 启动启用SSL 的MySQL服务器 440
29.6.4 使用启用SSL 的客户端进行连接 440
29.6.5 在my.cnf 文件中存储SSL 选项 440
29.7 小结 441
第30 章 结合使用PHP 与MySQL 442
30.1 进行安装的预备工作 443
30.1.1 在Linux/UNIX 中启用mysqli 扩展 443
30.1.2 在Windows 中启用mysqli扩展 443
30.1.3 使用MySQL 本地驱动程序 443
30.1.4 管理用户权限 443
30.1.5 处理示例数据 444
30.2 使用mysqli 扩展 444
30.2.1 建立和断开连接 444
30.2.2 处理连接错误 445
30.2.3 获得错误信息 445
30.2.4 在单独的文件中存储连接信息 446
30.2.5 保护连接信息 447
30.3 与数据库交互 447
30.3.1 向数据库发送查询 447
30.3.2 解析查询结果 449
30.3.3 确定所选择的行和受影响的行 450
30.3.4 处理准备语句 451
30.4 执行数据库事务 455
30.4.1 启用自动提交模式 455
30.4.2 提交事务 455
30.4.3 回滚事务 456
30.5 小结 456
第31 章 PDO 介绍 457
31.1 为什么还要另一种数据库抽象层 458
31.2 使用PDO 458
31.2.1 安装PDO 459
31.2.2 PDO 的数据库选项 459
31.2.3 连接到数据库服务器并选择数据库 460
31.2.4 错误处理 461
31.2.5 获取和设置属性 463
31.2.6 查询执行 463
31.2.7 准备语句介绍 464
31.2.8 获取数据 467
31.2.9 设置绑定列 469
31.2.10 处理事务 470
31.3 小结 470
第32 章 存储例程 471
32.1 应当使用存储例程吗 471
32.1.1 存储例程的优点 471
32.1.2 存储例程的缺点 472
32.2 MySQL 如何实现存储例程 472
32.2.1 创建存储例程 472
32.2.2 声明和设置变量 474
32.2.3 执行存储例程 475
32.2.4 创建和使用多语句存储例程 476
32.2.5 从另一个例程中调用例程 481
32.2.6 修改存储例程 482
32.2.7 删除存储例程 482
32.2.8 查看例程状态 482
32.2.9 查看例程的创建语法 483
32.2.10 条件处理 484
32.3 将例程集成到Web 应用程序 484
32.3.1 创建员工奖金界面 484
32.3.2 获取多条记录 485
32.4 小结 485
第33 章 MySQL 触发器 486
33.1 介绍触发器 486
33.1.1 为什么使用触发器 486
33.1.2 在事件前采取行动 487
33.1.3 在事件后采取行动 487
33.1.4 前触发器和后触发器 488
33.2 MySQL 对触发器的支持 488
33.2.1 创建触发器 488
33.2.2 查看现有的触发器 490
33.2.3 修改触发器 491
33.2.4 删除触发器 491
33.3 将触发器集成到Web 应用程序 491
33.4 小结 492
第34 章 视图 493
34.1 视图介绍 493
34.2 MySQL 对视图的支持 494
34.2.1 创建和执行视图 494
34.2.2 查看视图信息 498
34.2.3 修改视图 499
34.2.4 删除视图 499
34.2.5 更新视图 500
34.3 将视图结合到Web 应用程序中 500
34.4 小结 501
第35 章 实用数据库查询 502
35.1 示例数据 502
35.2 用PEAR 创建表格输出 503
35.2.1 安装HTML_Table 503
35.2.2 创建简单表 503
35.2.3 创建更可读的行输出 505
35.2.4 根据数据库数据创建表 505
35.3 排序输出 506
35.4 创建分页输出 507
35.5 列出页码 509
35.6 用子查询查询多个表 510
35.6.1 用子查询完成比较 511
35.6.2 用子查询确定存在性 511
35.6.3 用子查询维护数据库 512
35.6.4 在PHP 中使用子查询 512
35.7 用游标迭代结果集 513
35.7.1 游标基础 513
35.7.2 创建游标 513
35.7.3 打开游标 514
35.7.4 使用游标 514
35.7.5 关闭游标 515
35.7.6 在PHP 中使用游标 515
35.8 小结 515
第36 章 索引和搜索 516
36.1 数据库索引 516
36.1.1 主键索引 516
36.1.2 唯一索引 517
36.1.3 常规索引 518
36.1.4 全文索引 519
36.1.5 索引最佳实践 522
36.2 基于表单的搜索 522
36.2.1 执行简单搜索 523
36.2.2 扩展搜索功能 524
36.2.3 完成全文搜索 525
36.3 小结 526
第37 章 事务 527
37.1 什么是事务 527
37.2 MySQL 的事务功能 528
37.2.1 系统需求 528
37.2.2 表创建 528
37.3 示例项目 528
37.3.1 创建表并添加示例数据 529
37.3.2 执行示例事务 529
37.3.3 用法提示 531
37.4 用PHP 构建事务应用程序 531
37.5 小结 533
第38 章 导入和导出数据 534
38.1 示例表 534
38.2 使用数据定界 534
38.3 导入数据 535
38.3.1 利用LOAD DATA INFILE导入数据 535
38.3.2 用mysqlimport 导入数据 538
38.3.3 用PHP 加载表数据 540
38.4 导出数据 541
38.5 小结 543
· · · · · · (
收起)