第一篇 使用PHP 1
第1章 PHP快速入门 1
1.1开始之前:了解PHP 2
1.2创建一个示例应用:Bob的汽车零部件商店 2
1.2.1创建订单表单 2
1.2.2表单处理 3
1.3在HTML中嵌入PHP 4
1.3.1PHP标记 5
1.3.2PHP语句 6
1.3.3空格 6
1.3.4注释 7
1.4添加动态内容 7
1.4.1调用函数 8
1.4.2使用date()函数 8
1.5访问表单变量 9
1.5.1简短、中等以及冗长风格的表单变量 9
1.5.2字符串的连接 11
1.5.3变量和文本 12
1.6理解标识符 12
1.7检查变量类型 13
1.7.1PHP的数据类型 13
1.7.2类型强度 13
1.7.3类型转换 14
1.7.4可变变量 14
1.8声明和使用常量 15
1.9理解变量的作用域 15
1.10使用操作符 16
1.10.1算术操作符 16
1.10.2字符串操作符 17
1.10.3赋值操作符 17
1.10.4比较操作符 19
1.10.5逻辑操作符 20
1.10.6位操作符 21
1.10.7其他操作符 21
1.11计算表单总金额 23
1.12理解操作符的优先级和结合性 24
1.13使用可变函数 25
1.13.1测试和设置变量类型 25
1.13.2测试变量状态 26
1.13.3变量的重解释 27
1.14根据条件进行决策 27
1.14.1if语句 27
1.14.2代码块 28
1.14.3else语句 28
1.14.4elseif语句 29
1.14.5switch语句 30
1.14.6比较不同的条件 31
1.15通过迭代实现重复动作 31
1.15.1while循环 33
1.15.2for和foreach循环 34
1.15.3do...while循环 35
1.16从控制结构或脚本中跳出 35
1.17使用可替换的控制结构语法 36
1.18使用declare 36
1.19下一章 36
第2章 数据的存储与检索 37
2.1保存数据以便后期使用 37
2.2存储和检索Bob的订单 37
2.3文件处理 38
2.4打开文件 38
2.4.1选择文件模式 39
2.4.2使用fopen()打开文件 39
2.4.3通过FTP或HTTP打开文件 41
2.4.4解决打开文件时可能遇到的问题 41
2.5写文件 43
2.5.1fwrite()的参数 44
2.5.2文件格式 44
2.6关闭文件 45
2.7读文件 47
2.7.1以只读模式打开文件:fopen() 47
2.7.2知道何时读完文件:feof() 48
2.7.3每次读取一行数据:fgets()、fgetss()和fgetcsv() 48
2.7.4读取整个文件:readfile()、fpassthru()和file() 49
2.7.5读取一个字符:fgetc() 50
2.7.6读取任意长度:fread() 50
2.8使用其他有用的文件函数 50
2.8.1查看文件是否存在:file_exists() 51
2.8.2确定文件大小:filesize() 51
2.8.3删除一个文件:unlink() 51
2.8.4在文件中定位:rewind()、fseek()和ftell() 51
2.9文件锁定 52
2.10更好的方式:数据库管理系统 53
2.10.1使用普通文件的几个问题 53
2.10.2RDBMS是如何解决这些问题的 54
2.11进一步学习 54
2.12下一章 54
第3章 使用数组 55
3.1什么是数组 55
3.2数字索引数组 56
3.2.1数字索引数组的初始化 56
3.2.2访问数组的内容 57
3.2.3使用循环访问数组 57
3.3使用不同索引的数组 58
3.3.1初始化关联数组 58
3.3.2访问数组元素 58
3.3.3使用循环语句 58
3.4数组操作符 60
3.5多维数组 60
3.6数组排序 63
3.6.1使用sort()函数 63
3.6.2使用asort()函数和ksort()函数对关联数组排序 64
3.6.3反向排序 64
3.7多维数组的排序 64
3.7.1用户定义排序 64
3.7.2反向用户排序 66
3.8对数组进行重新排序 66
3.8.1使用shuffle()函数 66
3.8.2使用array_reverse()函数 68
3.9从文件载入数组 68
3.10执行其他数组操作 71
3.10.1在数组中浏览:each()、current()、reset()、end()、next()、pos()和prev() 71
3.10.2对数组的每一个元素应用任何函数:array_walk() 72
3.10.3统计数组元素个数:count()、sizeof()和array_count_values() 73
3.10.4将数组转换成标量变量:extract() 74
3.11进一步学习 75
3.12下一章 75
第4章 字符串操作与正则表达式 76
4.1创建一个示例应用程序:智能表单邮件 76
4.2字符串的格式化 78
4.2.1字符串的整理:chop()、ltrim()和trim() 78
4.2.2格式化字符串以便显示 78
4.2.3格式化字符串以便存储:addslashes()和stripslashes() 81
4.3用字符串函数连接和分割字符串 83
4.3.1使用函数explode()、implode()和join() 83
4.3.2使用strtok()函数 84
4.3.3使用substr()函数 84
4.4字符串的比较 85
4.4.1字符串的排序:strcmp()、strcasecmp()和strnatcmp() 85
4.4.2使用strlen()函数测试字符串的长度 86
4.5使用字符串函数匹配和替换子字符串 86
4.5.1在字符串中查找字符串:strstr()、strchr()、strrchr()和stristr() 86
4.5.2查找子字符串的位置:strpos()、strrpos() 87
4.5.3替换子字符串:str_replace()、substr_replace() 88
4.6正则表达式的介绍 89
4.6.1基础知识 89
4.6.2字符集和类 89
4.6.3重复 90
4.6.4子表达式 91
4.6.5子表达式计数 91
4.6.6定位到字符串的开始或末尾 91
4.6.7分支 92
4.6.8匹配特殊字符 92
4.6.9特殊字符一览 92
4.6.10在智能表单中应用 93
4.7用正则表达式查找子字符串 93
4.8用正则表达式替换子字符串 94
4.9使用正则表达式分割字符串 94
4.10进一步学习 95
4.11下一章 95
第5章 代码重用与函数编写 96
5.1代码重用的好处 96
5.1.1成本 96
5.1.2可靠性 97
5.1.3一致性 97
5.2使用require()和include()函数 97
5.2.1文件扩展名和require()函数 97
5.2.2使用require()制作Web站点的模板 99
5.2.3使用auto_prepend_file和auto_append_file 103
5.3在PHP中使用函数 104
5.3.1调用函数 104
5.3.2调用未定义的函数 105
5.3.3理解字母大小写和函数名称 106
5.4理解为什么要定义自己的函数 106
5.5了解基本的函数结构 106
5.6使用参数 108
5.7理解作用域 110
5.8参数的引用传递和值传递 112
5.9使用Return关键字 113
5.10实现递归 115
5.11进一步学习 116
5.12下一章 116
第6章 面向对象的PHP 117
6.1理解面向对象的概念 117
6.1.1类和对象 117
6.1.2多态性 118
6.1.3继承 119
6.2在PHP中创建类、属性和操作 119
6.2.1类的结构 119
6.2.2构造函数 120
6.2.3析构函数 120
6.3类的实例化 121
6.4使用类的属性 121
6.5使用private和public关键字控制访问 123
6.6类操作的调用 124
6.7在PHP中实现继承 124
6.7.1通过继承使用private和protected访问修饰符控制可见性 125
6.7.2重载 126
6.7.3使用final关键字禁止继承和重载 128
6.7.4理解多重继承 128
6.7.5实现接口 129
6.8类的设计 130
6.9编写类代码 130
6.10理解PHP面向对象的高级功能 138
6.10.1使用Per-Class常量 138
6.10.2实现静态方法 138
6.10.3检查类的类型和类型提示 139
6.10.4延迟静态绑定 139
6.10.5克隆对象 140
6.10.6使用抽象类 140
6.10.7使用_call()重载方法 141
6.10.8使用_autoload()方法 141
6.10.9实现迭代器和迭代 142
6.10.10将类转换成字符串 144
6.10.11使用Reflection(反射)API 144
6.11下一章 145
第7章 错误和异常处理 146
7.1异常处理的概念 146
7.2Exception类 148
7.3用户自定义异常 148
7.4Bob的汽车零部件商店应用程序的异常 151
7.5异常和PHP的其他错误处理机制 154
7.6进一步学习 154
7.7下一章 154
第二篇 使用MySQL 155
第8章 设计Web数据库 155
8.1关系数据库的概念 155
8.1.1表格 156
8.1.2列 156
8.1.3行 156
8.1.4值 156
8.1.5键 156
8.1.6模式 157
8.1.7关系 158
8.2设计Web数据库 158
8.2.1考虑要建模的实际对象 158
8.2.2避免保存冗余数据 159
8.2.3使用原子列值 160
8.2.4选择有意义的键 161
8.2.5考虑需要询问数据库的问题 161
8.2.6避免多个空属性的设计 161
8.2.7表格类型的总结 162
8.3Web数据库架构 162
8.4进一步学习 163
8.5下一章 163
第9章 创建Web数据库 164
9.1使用MySQL监视程序 165
9.2登录到MySQL 165
9.3创建数据库和用户 166
9.4设置用户与权限 167
9.5MySQL权限系统的介绍 167
9.5.1最少权限原则 167
9.5.2创建用户:GRANT命令 167
9.5.3权限的类型和级别 169
9.5.4REVOKE命令 170
9.5.5使用GRANT和REVOKE的例子 170
9.6创建一个Web用户 171
9.7使用正确的数据库 172
9.8创建数据库表 172
9.8.1理解其他关键字的意思 174
9.8.2理解列的类型 174
9.8.3用SHOW和DESCRIBE来查看数据库 176
9.8.4创建索引 177
9.9理解MySQL的标识符 177
9.10选择列数据类型 178
9.10.1数字类型 178
9.10.2日期和时间类型 179
9.10.3字符串类型 180
9.11进一步学习 181
9.12下一章 181
第10章 使用MySQL数据库 182
10.1SQL是什么 182
10.2在数据库中插入数据 183
10.3从数据库中获取数据 185
10.3.1获取满足特定条件的数据 186
10.3.2从多个表中获取数据 187
10.3.3以特定的顺序获取数据 191
10.3.4分组与合计数据 192
10.3.5选择要返回的行 194
10.3.6使用子查询 194
10.4更新数据库记录 196
10.5创建后修改表 197
10.6删除数据库中的记录 198
10.7表的删除 199
10.8删除整个数据库 199
10.9进一步学习 199
10.10下一章 199
第11章 使用PHP从Web访问MySQL数据库 200
11.1Web数据库架构的工作原理 200
11.2从Web查询数据库的基本步骤 203
11.2.1检查与过滤用户输入数据 203
11.2.2建立一个连接 204
11.2.3选择使用的数据库 205
11.2.4查询数据库 206
11.2.5检索查询结果 206
11.2.6从数据库断开连接 207
11.3将新信息放入数据库 208
11.4使用Prepared语句 211
11.5使用PHP与数据库交互的其他接口 212
11.6进一步学习 215
11.7下一章 215
第12章 MySQL高级管理 216
12.1深入理解权限系统 216
12.1.1user表 217
12.1.2db表和host表 218
12.1.3tables_priv表、columns_priv表和procs_priv表 219
12.1.4访问控制:MySQL如何使用grant表 220
12.1.5更新权限:修改什么时候生效 221
12.2提高MySQL数据库的安全性 221
12.2.1从操作系统角度来保护MySQL 221
12.2.2密码 222
12.2.3用户权限 222
12.2.4Web问题 223
12.3获取更多关于数据库的信息 223
12.3.1使用SHOW获取信息 223
12.3.2使用DESCRIBE获取关于列的信息 225
12.3.3用EXPLAIN理解查询操作的工作过程 225
12.4数据库的优化 229
12.4.1设计优化 229
12.4.2权限 229
12.4.3表的优化 229
12.4.4使用索引 230
12.4.5使用默认值 230
12.4.6其他技巧 230
12.5备份MySQL数据库 230
12.6恢复MySQL数据库 231
12.7实现复制 231
12.7.1设置主服务器 232
12.7.2执行初始的数据传输 232
12.7.3设置一个/多个从服务器 233
12.8进一步学习 233
12.9下一章 233
第13章 MySQL高级编程 234
13.1LOAD DATAINFILE语句 234
13.2存储引擎 234
13.3事务 235
13.3.1理解事务的定义 235
13.3.2通过InnoDB使用事务 236
13.4外键 237
13.5存储过程 238
13.5.1基本示例 238
13.5.2局部变量 240
13.5.3游标和控制结构 241
13.6进一步学习 244
13.7下一章 244
第三篇 电子商务与安全性 245
第14章 运营一个电子商务网站 245
14.1我们要实现什么目标 245
14.2考虑电子商务网站的类型 245
14.2.1使用在线说明书公布信息 246
14.2.2接收产品或服务的订单 247
14.2.3提供服务和数字产品 250
14.2.4为产品或服务增值 251
14.2.5减少成本 251
14.3理解风险和威胁 252
14.3.1网络黑客 252
14.3.2不能招揽足够的生意 253
14.3.3计算机硬件故障 253
14.3.4电力、通信、网络或运输故障 253
14.3.5广泛的竞争 253
14.3.6软件错误 254
14.3.7不断变化的政府政策和税收 254
14.3.8系统容量限制 254
14.4选择一个策略 254
14.5下一章 254
第15章 电子商务的安全问题 255
15.1信息的重要程度 255
15.2安全威胁 256
15.2.1机密数据的泄露 256
15.2.2数据丢失和数据破坏 257
15.2.3数据修改 258
15.2.4拒绝服务 258
15.2.5软件错误 259
15.2.6否认 260
15.3易用性、性能、成本和安全性 261
15.4建立一套安全政策 261
15.5身份验证原则 262
15.6加密技术基础 263
15.6.1私有密钥加密 264
15.6.2公有密钥加密 264
15.6.3数字签名 265
15.7数字证书 265
15.8安全的Web服务器 266
15.9审计与日志记录 267
15.10防火墙 267
15.11备份数据 268
15.11.1备份常规文件 268
15.11.2备份与恢复MySQL数据库 268
15.12自然环境的安全性 268
15.13下一章 269
第16章 Web应用的安全 270
16.1处理安全性问题的策略 270
16.1.1以正确心态为开始 270
16.1.2安全性和可用性之间的平衡 271
16.1.3安全监视 271
16.1.4基本方法 271
16.2识别所面临的威胁 271
16.2.1访问或修改敏感数据 272
16.2.2数据丢失或破坏 272
16.2.3拒绝服务 272
16.2.4恶意代码注入 272
16.2.5服务器被攻破 273
16.3了解与我们“打交道”的用户 273
16.3.1破解人员 273
16.3.2受影响机器的未知情用户 274
16.3.3对公司不满的员工 274
16.3.4硬件被盗 274
16.3.5我们自身 274
16.4代码的安全性 274
16.4.1过滤用户输入 274
16.4.2转义输出 278
16.4.3代码组织 279
16.4.4代码自身的问题 280
16.4.5文件系统因素 281
16.4.6代码稳定性和缺陷 281
16.4.7执行引号和exec 282
16.5Web服务器和PHP的安全性 283
16.5.1保持软件的更新 283
16.5.2查看php.ini文件 284
16.5.3Web服务器配置 284
16.5.4Web应用的商业主机服务 285
16.6数据库服务器的安全性 286
16.6.1用户和权限系统 286
16.6.2发送数据至服务器 287
16.6.3连接服务器 287
16.6.4运行服务器 288
16.7保护网络 288
16.7.1安装防火墙 288
16.7.2使用隔离区域(DMZ) 288
16.7.3应对DoS和DDoS攻击 289
16.8计算机和操作系统的安全性 289
16.8.1保持操作系统的更新 289
16.8.2只运行必需的软件 290
16.8.3服务器的物理安全性 290
16.9 灾难计划 290
16.10下一章 291
第17章 使用PHP和MySQL实现身份验证 292
17.1识别访问者 292
17.2实现访问控制 293
17.2.1保存密码 294
17.2.2密码的加密 296
17.2.3保护多个网页 298
17.3使用基本身份验证 298
17.4在PHP中使用基本身份验证 299
17.5在Apache的.htaccess文件中使用基本身份验证 301
17.6使用mod_auth_mysql身份验证 303
17.6.1安装mod_auth_mysql 304
17.6.2使用mod_authmysql 304
17.7创建自定义身份验证 305
17.8进一步学习 306
17.9下一章 306
第18章 使用PHP和MySQL实现安全事务 307
18.1提供安全的事务处理 307
18.1.1用户机器 308
18.1.2Internet 309
18.1.3我们的系统 309
18.2使用加密套接字层(SSL) 310
18.3屏蔽用户的输入 312
18.4提供安全存储 313
18.5存储信用卡号码 314
18.6在PHP中使用加密技术 314
18.6.1安装GPG 315
18.6.2测试GPG 317
18.7进一步学习 321
18.8下一章 321
第四篇 PHP的高级技术 323
第19章 与文件系统和服务器的交互 323
19.1文件上传 323
19.1.1文件上传的HTML代码 324
19.1.2编写处理文件的PHP 325
19.1.3避免常见上传问题 329
19.2使用目录函数 329
19.2.1从目录读取 329
19.2.2获得当前目录的信息 332
19.2.3创建和删除目录 333
19.3与文件系统的交互 333
19.3.1获取文件信息 333
19.3.2更改文件属性 336
19.3.3创建、删除和移动文件 336
19.4使用程序执行函数 337
19.5与环境变量交互:getenv()和putenv() 339
19.6进一步学习 339
19.7下一章 339
第20章 使用网络函数和协议函数 340
20.1了解可供使用的协议 340
20.2发送和读取电子邮件 340
20.3使用其他Web站点的数据 341
20.4使用网络查找函数 343
20.5备份或镜像一个文件 347
20.5.1使用FTP备份或镜像一个文件 347
20.5.2上传文件 353
20.5.3避免超时 353
20.5.4使用其他的FTP函数 353
20.6进一步学习 354
20.7下一章 354
第21章 日期和时间的管理 355
21.1在PHP中获取日期和时间 355
21.1.1使用date()函数 355
21.1.2使用UNIX时间戳 356
21.1.3使用getdate()函数 357
21.1.4使用checkdate()函数检验日期有效性 358
21.1.5格式化时间戳 358
21.2在PHP日期格式和MySQL日期格式之间进行转换 360
21.3在PHP中计算日期 362
21.4在MySQL中计算日期 363
21.5使用微秒 364
21.6使用日历函数 364
21.7进一步学习 365
21.8下一章 365
第22章 创建图像 366
22.1在PHP中设置图像支持 366
22.2理解图像格式 367
22.2.1JPEG 367
22.2.2PNG 367
22.2.3WBMP 368
22.2.4GIF 368
22.3创建图像 368
22.3.1创建一个背景图像 369
22.3.2在图像上绘图或打印文本 369
22.3.3输出最终图形 371
22.3.4清理 372
22.4在其他页面中使用自动生成的图像 372
22.5使用文本和字体创建图像 372
22.5.1创建基本画布 375
22.5.2将文本调整到适合按钮 375
22.5.3放置文本 378
22.5.4将文本写到按钮上 378
22.5.5完成 378
22.6绘制图像与用图表描绘数据 379
22.7使用其他图像函数 386
22.8进一步学习 386
22.9下一章 386
第23章 在PHP中使用会话控制 387
23.1什么是会话控制 387
23.2理解基本的会话功能 387
23.2.1什么是cookie 388
23.2.2通过PHP设置cookie 388
23.2.3在会话中使用cookie 388
23.2.4存储会话ID 389
23.3实现简单的会话 389
23.3.1开始一个会话 389
23.3.2注册一个会话变量 390
23.3.3使用会话变量 390
23.3.4注销变量与销毁会话 390
23.4创建一个简单的会话例子 391
23.5配置会话控制 392
23.6通过会话控制实现身份验证 393
23.7进一步学习 398
23.8下一章 398
第24章 其他有用的特性 399
24.1使用eval()函数对字符串求值 399
24.2终止执行:die()和exit() 399
24.3序列化变量和对象 400
24.4获取PHP环境信息 401
24.4.1找到所加载的PHP扩展部件 401
24.4.2识别脚本所有者 402
24.4.3确定脚本最近修改时间 402
24.5暂时改变运行时环境 402
24.6源代码加亮 403
24.7在命令行中使用PHP 404
24.8下一章 404
第五篇 创建实用的PHP和MySQL项目 405
第25章 在大型项目中使用PHP和MySQL 405
25.1在Web开发中应用软件工程 405
25.2规划和运行Web应用程序项目 406
25.3重用代码 406
25.4编写可维护代码 407
25.4.1编码标准 407
25.4.2分解代码 410
25.4.3使用标准的目录结构 410
25.4.4文档化和共享内部函数 410
25.5实现版本控制 411
25.6选择一个开发环境 412
25.7项目的文档化 412
25.8建立原型 413
25.9将逻辑和内容分离 413
25.10优化代码 414
25.10.1使用简单优化 414
25.10.2使用Zend产品 414
25.11测试 415
25.12进一步学习 415
25.13下一章 416
第26章 调试 417
26.1编程错误 417
26.1.1语法错误 417
26.1.2运行时错误 418
26.1.3逻辑错误 423
26.2使用变量帮助调试 424
26.3错误报告级别 426
26.4改变错误报告设置 427
26.5触发自定义错误 428
26.6巧妙地处理错误 428
26.7下一章 431
第27章 建立用户身份验证机制和个性化设置 432
27.1解决方案的组成 432
27.1.1用户识别和个性化设置 432
27.1.2保存书签 433
27.1.3推荐书签 433
27.2解决方案概述 433
27.3实现数据库 435
27.4实现基本的网站 436
27.5实现用户身份验证 438
27.5.1注册用户 438
27.5.2登录 443
27.5.3登出 447
27.5.4修改密码 447
27.5.5重设遗忘的密码 449
27.6实现书签的存储和检索 454
27.6.1添加书签 454
27.6.2显示书签 456
27.6.3删除书签 457
27.7实现书签推荐 459
27.8考虑可能的扩展 462
27.9下一章 462
第28章 创建一个购物车 463
28.1解决方案的组成 463
28.1.1创建一个在线目录 463
28.1.2在用户购买商品的时候记录购买行为 464
28.1.3实现一个付款系统 464
28.1.4创建一个管理界面 464
28.2解决方案概述 465
28.3实现数据库 467
28.4实现在线目录 469
28.4.1列出目录 470
28.4.2列出一个目录中的所有图书 472
28.4.3显示图书详细信息 474
28.5实现购物车 475
28.5.1使用show cart.php脚本 476
28.5.2浏览购物车 479
28.5.3将物品添加到购物车 481
28.5.4保存更新后的购物车 483
28.5.5打印标题栏摘要 483
28.5.6结账 484
28.6实现付款 490
28.7实现一个管理界面 491
28.8扩展该项目 498
28.9使用一个已有系统 498
28.10下一章 499
第29章 创建一个基于Web的电子邮件服务系统 500
29.1解决方案的组成 500
29.1.1电子邮件协议:POP3和IMAP 500
29.1.2PHP对POP3和IMAP的支持 501
29.2解决方案概述 502
29.3建立数据库 503
29.4了解脚本架构 504
29.5登录与登出 510
29.6建立账户 513
29.6.1创建一个新账户 515
29.6.2修改已有账户 516
29.6.3删除账户 516
29.7阅读邮件 517
29.7.1选择账户 517
29.7.2查看邮箱内容 519
29.7.3阅读邮件消息 522
29.7.4查看消息标题 525
29.7.5删除邮件 525
29.8发送邮件 526
29.8.1发送一则新消息 526
29.8.2回复或转发邮件 528
29.9扩展这个项目 530
29.10下一章 530
第30章 创建一个邮件列表管理器 531
30.1解决方案的组成 531
30.1.1建立列表和订阅者数据库 532
30.1.2上载新闻信件 532
30.1.3发送带附件的邮件 532
30.2解决方案概述 533
30.3建立数据库 534
30.4定义脚本架构 536
30.5实现登录 543
30.5.1新账户的创建 543
30.5.2登录 546
30.6用户函数的实现 548
30.6.1查看列表 548
30.6.2查看邮件列表信息 553
30.6.3查看邮件列表存档 555
30.6.4订阅与取消订阅 556
30.6.5更改账户设置 557
30.6.6更改密码 558
30.6.7登出 559
30.7管理功能的实现 560
30.7.1创建新的邮件列表 560
30.7.2上载新的新闻信件 562
30.7.3多文件上载的处理 565
30.7.4预览新闻信件 569
30.7.5发送邮件 570
30.8扩展这个项目 576
30.9下一章 576
第31章 创建一个Web论坛 577
31.1理解流程 577
31.2解决方案的组成 577
31.3解决方案概述 579
31.4数据库的设计 579
31.5查看文章的树形结构 581
31.5.1展开和折叠 583
31.5.2显示文章 585
31.5.3使用treenode类 586
31.6查看单个的文章 592
31.7添加新文章 593
31.8添加扩充 600
31.9使用一个已有的系统 600
31.10下一章 600
第32章 生成PDF格式的个性化文档 601
32.1项目概述 601
32.2解决方案的组成 604
32.2.1问题与回答系统 605
32.2.2文档生成软件 605
32.3解决方案概述 607
32.3.1提问 607
32.3.2给答题评分 609
32.3.3生成RTF证书 611
32.3.4从模板生成PDF证书 615
32.3.5使用PDFlib生成PDF文档 618
32.3.6使用PDFlib的一个“Hello World”程序 618
32.3.7用PDFlib生成证书 621
32.4处理标题的问题 628
32.5扩展该项目 629
32.6下一章 629
第33章 使用XML和SOAP来连接Web服务 630
33.1项目概述:使用XML和Web服务 630
33.1.1理解XML 631
33.1.2理解Web服务 633
33.2解决方案的组成 635
33.2.1使用Amazon的Web服务接口 635
33.2.2XML的解析:REST响应 636
33.2.3在PHP中使用SOAP 636
33.2.4缓存 636
33.3解决方案概述 636
33.3.1核心应用程序 640
33.3.2显示特定种类的图书 646
33.3.3获得一个AmazonResultSet类 647
33.3.4使用REST发送和接收请求 656
33.3.5使用SOAP发送和接收请求 662
33.3.6缓存请求返回的数据 664
33.3.7创建购物车 666
33.3.8到Amazon付账 670
33.4安装项目代码 670
33.5扩展这个项目 671
33.6进一步学习 671
第34章 使用Ajax构建Web 2.0应用 672
34.1Ajax是什么 672
34.1.1HTTP请求和响应 673
34.1.2DHTML和XHTML 673
34.1.3级联样式单 674
34.1.4客户端编程 675
34.1.5服务器端编程 675
34.1.6XML和XSLT 676
34.2Ajax基础 676
34.2.1XMLHTTPRequest对象 676
34.2.2与服务器通信 678
34.2.3处理服务器响应 679
34.2.4整合应用 681
34.3在以前的项目添加Ajax元素 683
34.4进一步学习 694
34.4.1进一步了解文档对象模型(DOM) 694
34.4.2Ajax应用可用的JavaScript函数库 694
34.4.3Ajax开发人员网站 695
附录 697
附录A 安装PHP及MySQL 697
附录B Web资源 712