第1章 开始了解PHP 1
1.1 第一个PHP程序 1
第一部分 PHP基础 1
1.2.1 标示PHP代码段落 3
1.2 输入PHP脚本 3
1.2.2 混合PHP和HTML 4
1.2.3 语句和注释 5
1.3 如何存储数据 6
1.4.1 数字 7
1.4 输入PHP的基本类型 7
1.4.2 字符串 9
1.5.1 n12br 12
1.5 一些非常有用的函数 12
1.4.3 布尔值 12
1.5.3 print_r 13
1.5.2 var_dump 13
1.6 小结 14
1.5.4 var_export 14
2.1 输入字符串的更多介绍 15
第2章 PHP语言 15
2.2.1 数组 17
2.2 数据类型的更多介绍 17
2.2.3 特殊类型和值 18
2.2.2 对象 18
2.3.1 基础 19
2.3 强制类型转换 19
2.3.2 特殊强制类型转换 20
2.3.3 有用的强制类型转换函数 23
2.4.1 定义常量 24
2.4 变量和常量 24
2.4.2 按值和按引用的变量 25
2.4.4 变量生存周期 26
2.4.3 变量范围 26
2.5.1 操作符:组合表达式 27
2.5 表达式和操作符 27
2.4.5 预定义变量 27
2.5.2 组合表达式和操作符的过程 33
2.6.1 if语句 34
2.6 控制结构 34
2.6.2 switch语句 35
2.6.4 for循环 37
2.6.3 while/do...while循环 37
2.6.6 中断循环 38
2.6.5 foreach循环 38
2.7 小结 39
3.1.1 定义和调用函数 40
3.1 基本代码重用:函数 40
第3章 代码组织和重用 40
3.1.2 把参数传递给函数 42
3.1.3 从函数返回值 47
3.1.4 函数内的变量范围 48
3.1.5 函数范围和可用性 50
3.1.6 把函数作为变量使用 52
3.2.1 把代码组织到文件中 53
3.2 中级代码重用:使用和包含文件 53
3.2.2 选择文件名和位置 55
3.2.3 在脚本中包含库文件 57
3.2.4 把包含用于页面模板化 61
3.3 小结 62
4.1 超越库之外 63
第4章 面向对象的程序设计 63
4.2 面向对象的程序设计 65
4.2.2 PHP中对象的基础 66
4.2.1 一些基本术语 66
4.2.3 初始化和清除对象 70
4.2.4 可见性:控制看这些内容的人 72
4.2.5 把静态数据添加到类 74
4.3.2 再次讲解可见性 78
4.3.1 扩展已有的类 78
4.3 扩展对象 78
4.3.3 基类方法的重新实现 79
4.3.4 使类的行为相同:多态性 80
4.4.1 对象的比较 87
4.4 其他特性 87
4.4.2 对象的克隆 88
4.4.3 用户界面友好的输出 89
4.4.5 自动加载 90
4.4.4 类型提示 90
4.5 小结 91
5.1.1 创建数组和添加数据 92
5.1 再次介绍数组 92
第5章 处理数组 92
5.1.2 访问数组中的元素 95
5.1.4 计算数组中元素的数量 97
5.1.3 删除数组元素和整个数组 97
5.2.1 foreach循环 98
5.2 数组元素的迭代 98
5.2.2 常规循环 99
5.2.3 内部循环计数器以及each、next、prev、pos和reset 100
5.2.4 array_walk方法 101
5.3 多维数组 102
5.4 对数组的操作 103
5.4.1 数组排序 104
5.4.2 其他数组操作 106
5.5 小结 108
6.2.1 ASCII 109
6.2 字符集和Unicode 109
第6章 世界上的字符串和字符 109
6.1 字符串和PHP 109
6.2.3 远东地区字符集 110
6.2.2 ISO 8859字符集 110
6.3 了解PHP中字符集的处理 111
6.2.5 Unicode编码 111
6.2.4 Unicode 111
6.3.1 处理其他字符集 112
6.3.3 我们应该如何处理字符 113
6.3.2 问题的出现 113
6.4.1 安装以及配置mbstring和mbregex 114
6.4 配置PHP处理Unicode 114
6.5.1 获得信息 115
6.5 对字符串的操作 115
6.4.2 函数重载 115
6.5.2 整理字符串 117
6.5.3 搜索和比较 118
6.5.4 提取 121
6.5.6 字符编码转换 122
6.5.5 大小写操作 122
6.6 小结 123
7.1 一个表单的范例 124
第7章 与服务器进行交互:表单 124
7.2.1 把表单添加到页面中 126
7.2 处理HTML表单 126
7.2.2 如何提交数据 128
7.2.3 在脚本中访问表单数据 130
7.3 服务器的操作 132
7.2.4 字符集和表单 132
7.3.2 服务器变量 133
7.3.1 服务器的注意事项 133
7.3.3 环境变量 136
7.4 重新定向用户 137
7.5 小结 139
8.1.1 基础 141
8.1 我们讨论的是什么 141
第二部分 数据库基础 141
第8章 数据库介绍 141
8.1.2 关系型数据库 142
8.2.2 数据库服务器 143
8.2.1 与简单文件或者电子表格的比较 143
8.2 使用DBMS的动机 143
8.3.1 MySQL 144
8.3 主要的数据库服务器 144
8.4 如何选择数据库服务器 145
8.3.5 其他服务器 145
8.3.2 PostgreSQL 145
8.3.3 Oracle数据库 145
8.3.4 Microsoft SQL Server 145
8.4.5 费用 146
8.4.4 是否可以从PHP访问 146
8.4.1 考虑你的数据 146
8.4.2 能力 146
8.4.3 性能 146
8.6 通用接口 147
8.5 我们的选择 147
8.7 小结 148
9.1 把什么存放到数据库中 149
第9章 设计和创建数据库 149
9.2.1 主键 150
9.2 组织数据 150
9.2.2 选择数据类型 151
9.2.3 把数据组织到表中 153
9.2.4 便于更快搜索的索引 155
9.3 SQL简介 156
9.4.2 连接和身份验证 157
9.4.1 与数据库服务器对话 157
9.4 创建数据库 157
9.4.3 创建数据库 158
9.5.1 准备创建用户 159
9.5 设置用户权限 159
9.5.3 删除用户或者删除权限 161
9.5.2 创建用户 161
9.6.1 SQL数据类型 162
9.6 创建表 162
9.6.2 数据库服务器客户的生存周期 164
9.6.3 创建表 165
9.6.4 表存储引擎 166
9.6.6 外键和级联删除 167
9.6.5 创建索引 167
9.8 小结 169
9.7 删除表和数据库 169
10.2.1 INSERT INTO语句 170
10.2 把数据插入表 170
第10章 使用数据库:存储和检索数据 170
10.1 准备工作 170
10.2.2 批量数据插入 171
10.2.3 日期类型条目 173
10.3 检索表中的数据 174
10.3.1 基本语法 175
10.3.2 在检索表数据时进行组合 176
10.3.3 对检索出的数据进行排序 179
10.4 修改表中的数据 180
10.3.4 一次获得少量行 180
10.6 小结 181
10.5 删除表中的数据 181
11.1.1 问题 183
11.1 事务处理 183
第11章 使用数据库:高级数据访问 183
11.1.2 解决方案 184
11.1.4 一个比较复杂的问题 185
11.1.3 编写事务处理 185
11.2.2 指定值的集合和范围 188
11.2.1 组合表达式 188
11.2 更高级的查询 188
11.2.4 查询中的SQL函数 189
11.2.3 获得惟一的值 189
11.2.5 对聚合函数数据进行分组 193
11.3 修改表模式 194
11.4 小结 195
12.1 准备工作 196
第12章 PHP和数据访问 196
12.2.1 事件序列 197
12.2 连接和身份验证 197
12.2.2 建立连接 198
12.3 执行查询 199
12.2.3 设置连接字符集 199
12.3.1 检索数据 200
12.3.2 验证用户输入 202
12.3.3 插入、删除和更新数据 204
12.3.4 事务处理 205
12.3.5 来自mysqli的错误 206
12.4.1 绑定参数 208
12.4 预备语句 208
12.4.2 绑定结果 209
12.5.1 过程式数据库接口的基础知识 210
12.5 旧式接口 210
12.5.2 持久性连接 212
12.6 小结 213
13.1.1 因特网:并没有你想像的那么复杂 215
13.1 详细讲解World Wide Web 215
第三部分 规划Web应用程序 215
第13章 Web应用程序和因特网 215
13.1.2 计算机和计算机的通信 216
13.1.3 超文本传输协议 217
13.1.4 MIME类型 219
13.1.5 安全套接字层(SSL) 220
13.2.2 基本布局 222
13.2.1 术语 222
13.1.6 其他重要协议 222
13.2 设计Web应用程序 222
13.2.4 业务逻辑 224
13.2.3 用户界面 224
13.2.6 n层体系结构 227
13.2.5 后端/服务器 227
13.2.7 性能和稳定性 228
13.3 小结 229
14.1.1 了解你的用户界面 230
14.1 用户界面的注意事项 230
第14章 实现用户界面 230
14.1.2 计划用户界面 231
14.1.3 帮助出现问题的用户 233
14.1.4 设计技巧和策略 234
14.2.1 级联样式单(CSS) 235
14.2 实现用户界面 235
14.2.2 包含文件 237
14.2.3 生成用户界面的代码库 238
14.2.4 实现用户界面驱动 242
14.3 小结 243
15.1 用户如何连接到我们的应用程序 244
第15章 用户管理 244
15.2 访问者和已知用户 246
15.3.2 在什么位置存储用户信息 247
15.3.1 部分和完全登录 247
15.3 用户身份验证 247
15.3.3 存储什么和不存储什么 248
15.4 小结 249
16.1.1 最重要的事情 250
16.1 处理安全性问题的策略 250
第16章 保护Web应用程序:规划和代码的安全性 250
16.2 标识威胁 251
16.1.4 我们的基本方法 251
16.1.2 安全性和可用性之间的平衡 251
16.1.3 开发工作完成之后 251
16.2.1 威胁 252
16.2.2 造成威胁的人 253
16.3.1 黄金法则 254
16.3 保护代码 254
16.3.2 过滤输入 255
16.3.3 代码的组织 259
16.3.5 文件系统注意事项 260
16.3.4 代码中的内容 260
16.3.7 执行引用和exec 261
16.3.6 代码稳定性和bug 261
16.4 小结 262
17.1.1 保持软件为最新版本 263
17.1 保护Web服务器和PHP 263
第17章 保护Web应用程序:软件和硬件安全性 263
17.1.3 Web服务器配置 264
17.1.2 php.ini 264
17.1.4 虚拟服务器 265
17.1.5 商业托管的Web应用程序 266
17.2 安全套接字层(SSL) 267
17.3.1 用户和权限系统 268
17.3 数据库的安全性 268
17.3.4 运行服务器 269
17.3.3 连接到服务器 269
17.3.2 把数据发送到服务器 269
17.4.2 DMZ 270
17.4.1 防火墙 270
17.4 保护网络 270
17.5.3 服务器的物理安全 271
17.5.2 只运行必须的程序 271
17.4.3 了解DoS和DDoS攻击 271
17.5 计算机和操作系统的安全性 271
17.5.1 保持操作系统为最新版本 271
17.7 小结 272
17.6 灾难计划 272
18.1.1 来自PHP的错误 273
18.1 错误是如何出现的 273
第四部分 实现Web应用程序 273
第18章 错误处理和调试 273
18.1.2 我们代码中的缺陷 274
18.1.3 外部错误 275
18.2.2 PHP生成哪些错误 276
18.2.1 PHP如何显示错误 276
18.2 PHP如何处理错误 276
18.2.3 处理错误 277
18.3.1 异常的基础知识 282
18.3 异常 282
18.2.4 配置PHP的错误处理 282
18.3.2 处理异常 284
18.3.3 未处理的异常 287
18.3.4 扩展异常 288
18.4.1 测试代码 290
18.4 调试 290
18.5 小结 292
18.4.2 源代码调试器 292
19.1.1 基本操作 293
19.1 cookie:诱人并且有用 293
第19章 cookie和会话 293
19.1.2 cookie如何工作 296
19.1.3 控制cookie的有效性 297
19.1.7 能力监视器 298
19.1.6 把什么放到cookie中 298
19.1.4 删除cookie 298
19.1.5 cookie数组 298
19.2 会话 299
19.2.1 基本用法 300
19.2.2 配置PHP的会话 301
19.2.3 如何传输会话ID 302
19.2.4 使用会话存储数据 303
19.2.5 页面缓存 306
19.2.6 破坏会话 307
19.2.7 会话存储如何工作 308
19.3.1 获得会话ID 312
19.3 会话的安全性 312
19.3.2 限制泄密的会话ID造成的损害 313
19.4 小结 314
20.1 成员计划 315
第20章 用户身份验证 315
20.2.1 基本的HTTP身份验证 317
20.2 Web服务器提供的身份验证 317
20.2.2 Microsoft Windows身份验证方案 321
20.3.1 配置数据库来处理登录 322
20.3 实现自己的身份验证 322
20.3.2 添加新的用户 323
20.3.3 登录用户 331
20.3.4 更新需要用户登录的页面 337
20.3.5 注销用户 340
20.3.6 删除用户 342
20.4 小结 343
21.11 地区及其属性 344
21.1 全球化和地区 344
第21章 高级输出和输出缓冲 344
21.1.2 了解用户所在地区 345
21.1.3 设置当前页面的地区(Unix) 346
21.1.4 设置当前页面的地区(Windows) 347
21.2 格式化输出 349
21.1.5 了解当前地区 349
21.2.2 货币值 350
21.2.1 数字的格式化 350
21.2.3 其他格式化函数 353
21.3.1 输出缓冲如何工作 355
21.3 输出缓冲 355
21.3.2 使用输出缓冲 356
21.3.3 编写自己的处理程序 357
21.4 小结 358
22.1.1 正则表达式是什么 359
22.1 使用正则表达式 359
第22章 使用正则表达式进行数据验证 359
22.1.3 测试表达式 360
22.1.2 设置 360
22.1.4 基本搜索 361
22.1.5 字符类 362
22.1.6 边界 363
22.1.8 重复模式 364
22.1.7 点号 364
22.1.10 技巧和陷阱 365
22.1.9 分组和选择 365
22.2.2 匹配电话号码 366
22.2.1 验证用户名 366
22.2 使用正则表达式进行数据验证 366
22.2.4 匹配电子邮件地址 367
22.2.3 匹配邮政编码 367
22.3.1 ereg_replace 368
22.3 其他正则表达式函数 368
22.3.2 split 370
22.4 小结 371
23.1.1 XML是什么 372
23.1 XML 372
第23章 XML和XHTML 372
23.1.3 基本术语 373
23.1.2 为什么使用XML 373
23.1.4 XML文档的结构 374
23.1.5 命名空间 378
23.1.6 验证XML 380
23.1.7 相关技术 381
23.2 在PHP中处理XML 382
23.2.2 使用DOM 383
23.2.1 使用SAX还是DOM 383
23.3 XHTML 392
23.3.2 如何处理XHTML 393
23.3.1 为什么使用XHTML 393
23.4 小结 395
23.3.3 转换为XHTML 395
24.1.1 打开文件 396
24.1 访问文件 396
第24章 文件和目录 396
24.1.3 读取文件 398
24.1.2 关闭文件 398
24.1.4 写入文件 400
24.1.5 文件权限和其他信息 402
24.2.1 路径操作 404
24.2 访问目录 404
24.1.6 删除和重命名文件 404
24.2.2 使用类浏览目录内容 405
24.2.5 创建和删除目录 406
24.2.4 改变当前目录 406
24.2.3 使用函数浏览目录内容 406
24.3 安全性注意事项 407
24.4 小结 408
25.1.2 为上载配置PHP 409
25.1.1 文件上载如何工作 409
第25章 上载文件 409
25.1 上载用户文件 409
25.1.3 客户表单 410
25.1.4 服务器代码 411
25.1.5 限制上载文件的大小 414
25.1.6 处理多个文件 415
25.2.1 设置 416
25.2 上载文件范例 416
25.2.3 创建新的账户 417
25.2.2 新账号表单 417
25.2.4 查看用户数据 420
25.2.5 从数据库获得图像 422
25.3.1 只允许可信用户 423
25.3 安全性注意事项 423
25.4 小结 424
25.3.4 恶意文件名 424
25.3.2 拒绝服务 424
25.3.3 文件验证 424
26.1.2 操作系统 425
26.1.1 PHP 425
第26章 处理日期和时间 425
26.1 日期和时间的来源 425
26.1.4 Web页面和用户 426
26.1.3 数据库服务器 426
26.2.1 PHP中的时间戳 427
26.2 PHP中的日期和时间 427
26.2.2 获得日期和时间 428
26.2.3 验证日期和时间 431
26.2.4 比较日期和时间 432
26.2.5 输出格式化的日期和时间 435
26.2.6 时间戳的问题 437
26.3.2 增加或者减去时间间隔 438
26.3.1 常用数据库服务器中的日期和时间范围 438
26.3 数据库服务器中更多的日期和时间 438
26.3.4 MySQL和时间戳 439
26.3.3 解析数据库中的日期 439
26.4 小结 440
27.1.2 进入XML Web服务 441
27.1.1 建立阶段 441
第27章 XML Web服务和SOAP 441
27.1 XML Web服务 441
27.1.3 查找Web服务 442
27.2.1 SOAP 443
27.2 Web服务如何工作 443
27.2.2 WSDL 444
27.2.3 HTTP 449
27.3.1 选择Web服务 450
27.3 在PHP中使用Web服务 450
27.2.4 XML-RPC 450
27.3.3 处理服务 452
27.3.2 配置PHP 452
27.4.2 更多地了解服务 456
27.4.1 为使用Google API进行设置 456
27.4 范例:处理Google API 456
27.4.3 搜索如何工作 457
27.4.4 搜索关键字 459
27.5 小结 463
28.1.2 PEAR基础类 464
28.1.1 代码库 464
第28章 使用PEAR 464
28.1 PEAR介绍 464
28.2.2 Windows用户 465
28.2.1 Unix用户 465
28.1.3 支持社区 465
28.1.4 PECL 465
28.2 安装和配置 465
28.3.2 列出包 467
28.3.1 获得帮助 467
28.3 基本命令 467
28.3.3 下载和安装包 468
28.3.5 更新现有包 470
28.3.4 获得信息 470
28.3.7 PEAR配置选项 471
28.3.6 卸载包 471
28.4.2 基本使用 472
28.4.1 安装 472
28.4 范例:使用日期类 472
28.4.3 更多范例 473
28.5 小结 474
29.1.1 关于样式的担心 475
29.1 编码标准 475
第29章 开发和部署 475
29.1.2 开发编码标准文档 476
29.1.4 其他注意事项 479
29.1.3 争论 479
29.2.2 它们如何工作 480
29.2.1 我的目的是什么 480
29.2 源代码控制 480
29.2.3 选择源代码控制系统 483
29.2.4 处理源代码控制 484
29.3.1 为什么要费力进行测试 485
29.3 测试 485
29.3.2 单元测试 486
29.3.3 性能和负载测试 489
29.4.2 过程的脚本编写和自动化 491
29.4.1 测试服务器 491
29.3.4 bug控制 491
29.4 部署 491
29.4.3 部署到运营服务器 492
29.5 小结 493
30.1 单实例对象 495
第30章 开发成功Web应用程序的策略 495
第五部分 范例工程和更多概念 495
30.2.1 配置 497
30.2 会话管理 497
30.2.2 安全性 498
30.2.3 将所有东西组合在一起 499
30.3.1 用户错误与应用程序错误 501
30.3 整体的错误处理方式 501
30.3.2 替换默认的处理程序 503
30.3.3 向用户显示错误 506
30.3.4 创建新的异常类 508
30.4 数据库连接管理 509
30.4.1 更好的途径 510
30.4.2 最佳途径 512
30.4.3 改进了的新的字符串转义函数 514
30.5 PHP配置设置 514
30.5.1 总体设置 514
30.5.2 多字节字符串设置 515
30.5.3 错误设置 515
30.5.4 数据库设置 515
30.6 小结 515
第31章 预约管理器 517
31.1 概述 517
31.2 安装和运行范例 518
31.3 结构和页面流程 519
31.3.1 页面结构 519
31.3.2 数据库布局 521
31.3.3 UI策略 522
31.3.4 完整文件清单 524
31.4 查看代码 525
31.4.1 AppointmentManager类 525
31.4.2 处理日期和时间 529
31.4.3 处理表单和页面流程 532
31.4.4 显示星期和月 538
31.5 建议/练习 541
31.5.1 改变天视图和周视图 541
31.5.5 允许重叠预约 542
31.5.4 转换为PEAR Date类 542
31.5.6 构成多用户系统 542
31.6 小结 542
31.5.3 删除或者移动预约 542
31.5.2 星期一到星期日的星期显示 542
第32章 博客引擎 543
32.1 概述 543
32.2 安装和运行范例 544
32.3 结构和页面流程 545
32.3.1 页面布局 545
32.3.2 数据库结构和说明 546
32.3.3 UI策略 548
32.3.4 完整文件清单 549
32.4 查看代码 550
32.4.1 用户界面生成 550
32.4.2 用户管理 553
32.4.3 跟踪登录的用户 559
32.4.4 管理条目和评论 564
32.5 建议/练习 570
32.5.4 用事务进行用户创建 571
32.5.3 分层的评论 571
32.5.5 实现新的strip_tags函数 571
32.5.2 允许匿名评论 571
32.5.1 改进主页上的用户清单 571
32.6 小结 572
第33章 电子商务应用程序 573
33.1 概述 573
33.2 安装和运行范例 574
33.3 结构和页面流程 575
33.3.1 范例的代码结构 575
33.3.2 页面布局 577
33.3.3 数据库结构 577
33.3.4 UI策略 581
33.3.5 完整文件清单 582
33.4 查看代码 584
33.4.1 浏览产品 584
33.4.2 实现购物车 586
33.4.3 结账流程 589
33.4.4 提交订单 598
33.4.5 安全性 604
33.5 付款处理 604
33.6.3 管理页面 605
33.6.2 发送订单处理 605
33.6.4 订单状态/取消订单 605
33.6.1 跳过发货信息 605
33.6 建议/练习 605
33.7 小结 606
附录 607
附录A 安装/配置 607
附录B 等效的数据库功能 624
附录C 推荐的读物 629