第1篇 PHP动态网站基础入门篇 1
第1章 建立首要的、基本的正确认知 3
第2章 PHP基础——PHP动态网页和PHP语法基础 17
第3章 PHP基础——数据运算和流程控制 43
第4章 PHP基础——使用预定义函数和创建自定义函数 69
第2篇 交互应用程序和数据库应用程序篇 115
第5章 PHP动态网页的请求和响应 117
第6章 PHP使用表单开发交互式应用程序 143
第7章 PHP和数据库集成——使用PDO访问数据库 163
第8章 PHP和数据库集成——数据库设计和SQL语法 199
第9章 PHP和数据库集成——深入PDO 235
第3篇 PHP应用程序高级进阶篇 271
第10章 在PHP中使用正则表达式 273
第11章 Session、Cookies和状态管理 293
第12章 网页的国际化和区域化 325
第13章 PHP脚本出错、调试与异常情况处理 345
第14章 PHP网络应用程序的安全 367
第15章 在PHP网页内使用类和面向对象PHP开发 405
第4篇 PHP应用程序架构和PHP扩展应用篇 365
第16章 PHP网络应用程序基础架构和PHP扩展 447
第17章 使用MySQL数据库函数和MySQLi扩展 457
第18章 使用PHP操作文件系统 479
第19章 使用PHP结合XML开发 495
第20章 使用PHP发送和接收电子邮件 537
第21章 PHP事务和关键应用程序开发 557
附录A PHP关键字列表 565
附录B 常用字符集速查表 569
附录C PHP支持的时区字符串列表 571
附录D php.ini核心配置选项说明 577
附录E 测试题答案 583
附录F 参考资料 597
第1篇 PHP动态网站基础入门篇 3
第1章 建立首要的、基本的正确认知 3
1.1PHP网络应用程序的工作原理 4
1.1.1 Web应用程序的基本工作原理 4
1.1.2 PHP网络应用程序的基本工作原理 6
1.2安装和设置PHP网络应用程序的运行环境 7
1.2.1下载和安装PHP应用程序服务器 8
1.2.2安装和配置Web服务器 9
1.2.3创建第一个PHP网页 13
1.3测试题 15
第2章 PHP基础——PHP动态网页和PHP语法基础 17
2.1编写PHP网页的基本语法 18
2.1.1定义PHP执行块 18
2.1.2 PHP输出指令 20
2.1.3什么是脚本语言 20
2.1.4 PHP代码与HTML代码混合 21
2.1.5怎样书写PHP代码 22
2.2变量的定义 23
2.2.1定义和命名变量 23
2.2.2变量的数据类型 24
2.2.3为变量赋值和更改变量值 26
2.2.4常量 28
2.3使用变量和获取变量值 30
2.3.1变量传递的方式 30
2.3.2变量的引用 32
2.3.3可变变量 35
2.4定义数组变量 36
2.4.1数组变量的声明和使用 37
2.4.2复合数组 38
2.5程序注释 39
2.5.1使用PHP注释 39
2.5.2使用HTML注释 40
2.6测试题 40
第3章 PHP基础——数据运算和流程控制 43
3.1数据类型和运算 44
3.1.1表达式 44
3.1.2算术运算符 45
3.1.3字符串运算符 46
3.1.4比较运算符和逻辑运算符 47
3.1.5位运算符 49
3.1.6赋值运算符 50
3.1.7其他运算符 51
3.1.8运算符的使用规则 52
3.2流程控制 53
3.2.1语句和语句块 54
3.2.2 if…else条件语句 55
3.2.3 switch条件语句 58
3.2.4 do…while循环 60
3.2.5 for循环 62
3.2.6 foreach循环 62
3.2.7其他的流程控制 63
3.2.8 try…catch…throw语句 66
3.2.9流程控制总结 67
3.3测试题 67
第4章 PHP基础——使用预定义函数和创建自定义函数 69
4.1变量处理函数 70
4.1.1显示变量的结构 70
4.1.2强制数据类型转换 71
4.1.3变量的数据类型判断 75
4.1.4判断变量是否为空 76
4.1.5 isset()结构和unset()结构 77
4.2数学运算函数 77
4.3字符串操作函数 80
4.4时间和日期操作 82
4.4.1时间和日期操作中常用到的概念 83
4.4.2配置选项 83
4.4.3 DateTime类的构造方法 84
4.4.4格式化时间和日期 85
4.4.5修改日期和时间 87
4.4.6处理时区 88
4.4.7用于处理时间和日期的相关函数 89
4.5数组操作 91
4.5.1常用的基本操作 93
4.5.2获取数组的元素数量 94
4.5.3分别获取数组的键和值 94
4.5.4遍历数组 94
4.5.5数组的排序 98
4.6自定义函数 101
4.6.1函数的定义 101
4.6.2函数的调用 102
4.6.3定义参数初始值 103
4.6.4条件函数和嵌套函数 103
4.6.5可变长度参数和函数处理函数 104
4.6.6匿名函数的定义 105
4.7 变量的作用范围和生命周期 105
4.7.1脚本级变量和局部变量 106
4.7.2全局变量 106
4.7.3静态变量 107
4.8引用(包含)文件 108
4.8.1配置Apache实现静态包含 109
4.8.2使用PHP函数实现动态包含 110
4.9测试题 113
第2篇 交互应用程序和数据库应用程序篇 117
第5章 PHP动态网页的请求和响应 117
5.1了解请求和响应的基本过程 118
5.1.1请求和响应的基本过程 118
5.1.2 了解URI、 URL和URN 120
5.2HTTP协议基础 121
5.2.1 了解HTTP消息的内容 121
5.2.2了解HTTP请求的内容 122
5.2.3了解HTTP响应的内容 123
5.2.4了解HTTP消息报头的内容 125
5.3使用PHP处理请求报头 127
5.4对请求作出响应 130
5.4.1返回消息正文给客户端 131
5.4.2返回响应状态行和响应报头给客户端 131
5.4.3重定向 134
5.4.4设置响应内容的格式和类型 135
5.4.5遍历响应报头 136
5.5处理网页缓存 136
5.5.1服务端网页缓存的处理 137
5.5.2客户端网页缓存的处理 139
5.6测试题 141
第6章 PHP使用表单开发交互式应用程序 143
6.1创建表单 144
6.1.1 HTML表单基本知识 144
6.1.2使用样式表控制表单的显示 148
6.1.3创建访客留言表单 149
6.2接收表单数据 152
6.2.1 了解POST方法和GET方法 152
6.2.2接收表单提交的数据——POST方法和GET方法 153
6.2.3处理单名多值表单 155
6.2.4遍历表单变量 156
6.2.5处理结果不良好的控件 157
6.2.6其他处理表单的方法 159
6.2.7关于图形提交按钮 160
6.3关于register_globals 160
6.4测试题 161
第7章 PHP和数据库集成——使用PDO访问数据库 163
7.1了解PDO 164
7.2安装和使用数据库 165
7.2.1安装和使用Access数据库 165
7.2.2存放和保护Access数据库文件 168
7.2.3安装和配置MySQL数据库服务器 169
7.2.4配置和使用phpMyAdmin管理MySQL 171
7.3理解数据库连接和配置数据源 175
7.3.1理解数据库连接 175
7.3.2理解数据库连接驱动 176
7.3.3通过ODBC连接数据库 176
7.4基本数据库查询操作 180
7.4.1查询和显示数据记录 180
7.4.2遍历列出数据库内容 181
7.5修改数据 182
7.5.1插入数据记录 182
7.5.2更新数据记录 183
7.5.3删除数据记录 184
7.5.4插入和显示数据库中的图片(处理二进制数据) 185
7.6操作数据库结构 187
7.7在PHP中应用PDO的基本步骤 188
7.7.1创建连接 188
7.7.2执行查询 192
7.7.3处理结果 193
7.7.4关闭连接 194
7.8常用数据库连接 195
7.8.1连接到SQL Server和 Sybase数据库 195
7.8.2连接到Firebird和Interbase数据库 195
7.8.3连接到IBM DB2数据库 195
7.8.4连接到PDO_OCI数据库 196
7.8.5连接到PDO_ODBC数据库 197
7.8.6连接到PDO_PGSQL数据库 197
7.8.7连接到PDO_SQLITE数据库 197
7.9测试题 198
第8章 PHP和数据库集成——数据库设计和SQL语法 199
8.1数据库设计的基本知识 200
8.1.1关于数据库 200
8.1.2设计数据库 202
8.2 SQL语法入门 204
8.2.1语法基础知识 204
8.2.2定义记录集的列 206
8.2.3限制记录集中的记录 206
8.2.4对记录集中的记录进行排序 208
8.2.5连接表 209
8.3使用MySQL服务器命令行工具进行管理 213
8.3.1连接MySQL服务器 214
8.3.2修改密码 214
8.3.3用户账户管理 215
8.3.4数据类型 215
8.3.5数据库操作 218
8.3.6 MySQL数据备份与恢复 219
8.4创建和使用SQL存储过程 223
8.4.1使用命令行创建存储过程 224
8.4.2调用存储过程 225
8.4.3为调用存储过程定义参数 226
8.5 SQL注入缺陷和参数化查询 228
8.5.1基本的SQL注入预防措施 229
8.5.2使用参数化查询预防SQL注入 230
8.5.3 magic_quotes_gpc导致的SQL注入 231
8.6测试题 233
第9章 PHP和数据库集成——深入PDO 235
9.1了解PDO编程模型 236
9.1.1了解PDO类 236
9.1.2了解PDOStatement类 237
9.1.3 了解PDOException 238
9.2使用预处理语句和参数化查询 238
9.2.1使用预处理 238
9.2.2指定参数和实现参数化查询 239
9.3游标和数据提取 242
9.3.1游标的类型 243
9.3.2数据提取方法 243
9.3.3数据提取方法和提取模式的配合 245
9.3.4关于元数据 254
9.4结果集分页 256
9.4.1结果集分页的方式 256
9.4.2结果集分页的技术原理 256
9.4.3结果集分页的范例 257
9.4.4使用LIMIT子句分页 261
9.5关于PDO连接属性 266
9.5.1字段名区分大小写 267
9.5.2了解PDO持久连接 267
9.6错误和错误处理 268
9.7测试题 269
第3篇 PHP应用程序高级进阶篇 273
第10章 在PHP中使用正则表达式 273
10.1使用正则表达式 274
10.1.1正则表达式基本语法 274
10.1.2优先权顺序 279
10.2在PHP中处理正则表达式 280
10.2.1 Perl兼容正则表达式函数 280
10.2.2了解PCRE模式修正符 289
10.2.3 POSIX扩展正则表达式函数 290
10.3测试题 291
第11章 Session、 Cookies和状态管理 293
11.1理解Session和Cookie 294
11.1.1什么是Cookie 295
11.1.2什么是Session 295
11.1.3了解Cookie的格式和内容 296
11.1.4 Session和Cookie的使用环境 297
11.2使用Cookie完成状态管理 298
11.2.1怎样传送和使用Cookie 298
11.2.2创建Cookie 300
11.2.3访问Cookie 301
11.2.4设置Cookie路径 301
11.2.5检查浏览器是否接受Cookie 302
11.3使用Session完成状态管理 303
11.3.1激活PHP网页中的Session支持 303
11.3.2怎样传送和使用Session 305
11.3.3创建和管理Session 307
11.3.4启动和结束Session 310
11.3.5 Session的相关配置 312
11.3.6管理Session的相关函数 315
11.3.7使用URL参数传递 Session ID 320
11.4其他维护状态的方法 322
11.5测试题 322
第12章 网页的国际化和区域化 325
12.1了解网页字符编码 326
12.1.1计算机文字字符编码简介 326
12.1.2文档字符集和选择字符编码 328
12.1.3在HTML文档中使用字符引用 329
12.2字符编码和PHP网页 330
12.2.1指定网页字符编码 330
12.2.2字符编码的优先级 331
12.2.3乱码产生的根源和解决方案 331
12.2.4为PHP网页实际编码 332
12.2.5创建多语言网站 332
12.3区域化设置和PHP网页 334
12.3.1国际化和区域化设置 334
12.3.2区域化设置和字符集的匹配 335
12.3.3使用setlocale()函数设置区域化 337
12.4创建PHP网页实现国际化和区域化 339
12.4.1了解国际化和区域化的相关函数 339
12.4.2制作资源包 339
12.4.3放置资源包 343
12.5测试题 344
第13章 PHP脚本出错、调试与异常情况处理 345
13.1错误和异常情况 346
13.2调试PHP的方法 347
13.3配置PHP调试环境 348
13.3.1安装和配置Zend StudioDebugger 349
13.3.2安装和配置Zend Studio 350
13.4使用Zend Studio进行调试 352
13.4.1调试工具栏 352
13.4.2主窗口 352
13.4.3调用堆栈窗口 354
13.4.4本地变量窗口 354
13.4.5监视窗口 354
13.4.6输出窗口 355
13.5使用脚本调试工具范例实战 355
13.5.1定义一个PHP网页 356
13.5.2调试实战 357
13.6异常情况处理 360
13.6.1使用try…catch语句和throw语句 361
13.6.2自定义捕捉异常的方法 362
13.6.3自定义捕捉错误的方法 363
13.6.4将出错信息写入日志 364
13.7 测试题 365
第14章 PHP网络应用程序的安全 367
14.1身份验证和授权 368
14.1.1 了解Apache提供的身份验证功能 368
14.1.2关于匿名访问站点 369
14.1.3创建基本身份验证站点 369
14.1.4摘要式身份验证 373
14.1.5分级访问控制 377
14.1.6使用表单的身份验证和基于角色的授权系统 378
14.2传输过程中的加密 378
14.2.1加密的工作原理 378
14.2.2安全证书的工作原理 380
14.2.3使用隐私和安全证书 380
14.3配置Apache支持SSL 380
14.3.1安装OpenSSL 381
14.3.2创建服务器证书和私钥 381
14.3.3配置Apache和mod ssl 384
14.3.4信任自签名证书 386
14.3.5创建CA 387
14.3.6使用CA签名和颁发证书 388
14.3.7在客户端安装根证书 390
14.4使用浏览器证书 393
14.4.1使用浏览器证书的注意事项 393
14.4.2创建浏览器证书 393
14.4.3安装浏览器证书 394
14.4.4启用浏览器证书 395
14.4.5使用客户证书映射 399
14.5了解NTFS权限 400
14.5.1显示“安全”选项卡 401
14.5.2设置和更改权限 401
14.5.3了解文件和文件夹的权限 402
14.5.4了解用户账户和组 403
14.5.5管理用户账户和组 404
14.6测试题 404
第15章 在PHP网页内使用类和面向对象PHP开发 405
15.1第一个面向对象开发的范例 406
15.2关于面向对象设计和类 406
15.2.1面向对象和结构化程序设计的区别 406
15.2.2什么是面向对象程序设计 407
15.2.3面向对象程序设计的优点和基本特征 408
15.3创建和使用类 409
15.3.1定义方法和属性 409
15.3.2构造方法和析构方法 412
15.3.3方法的重载 414
15.3.4动态属性 416
15.3.5使用_isset()和_unset() 417
15.3.6类的继承 418
15.3.7方法的覆载 420
15.3.8在类中使用final修饰符 422
15.3.9定义类常量 423
15.4抽象方法、抽象类和接口 423
15.4.1抽象方法和抽象类 423
15.4.2接口、继承和实现 425
15.4.3接口和抽象类的区别 426
15.5访问类的方法和属性 428
15.5.1控制成员访问 429
15.5.2访问类的属性和方法 430
15.6区别实例成员和类成员(静态成员) 433
15.6.1创建类成员 433
15.6.2类成员和子类 435
15.6.3类成员和实例成员 435
15.7 魔术方法 435
15.7.1序列化和逆序列化 436
15.7.2转换为字符串 438
15.7.3 set state方法 438
15.7.4克隆 439
15.8对象成员的迭代 440
15.9 PHP 4.0和PHP 5.0在使用对象上的不同 441
15.10测试题 443
第4篇 PHP应用程序架构和PHP扩展应用篇 447
第16章 PHP网络应用程序基础架构和PHP扩展 447
16.1 PHP网络应用程序的三层架构模型 448
16.1.1从C/S架构到B/S架构 449
16.1.2从三层架构到N层架构 451
16.1.3 PHP网页在三层架构中的地位 452
16.2使用PHP扩展和PEAR 452
16.2.1使用PHP扩展 452
16.2.2安装和使用PEAR扩展 454
16.3测试题 456
第17章 使用MySQL数据库函数和MySQLi扩展 457
17.1 了解MySQL数据库函数 458
17.1.1 MySQL运行时配置 458
17.1.2 MySQL资源类型 458
17.1.3预定义常量 459
17.2基本数据库查询操作 459
17.2.1查询和显示数据记录 459
17.2.2遍历列出数据库内容 460
17.3修改数据 461
17.3.1插入数据记录 461
17.3.2更新数据记录 462
17.3.3删除数据记录 463
17.3.4插入和显示数据库中的图片(二进制数据) 464
17.3.5使用MySQL数据库函数操控数据库 466
17.4使用MySQL i扩展 470
17.4.1 MySQLi运行时配置 470
17.4.2 MySQLi基本的使用方法 471
17.4.3使用MySQLi类 474
17.4.4使用mysqli stmt类 476
17.4.5使用mysqli result类 477
17.5测试题 477
第18章 使用PHP操作文件系统 479
18.1了解目录和文件的路径 480
18.2获取目录和文件的信息 481
18.2.1获取磁盘的总大小和可用空间 481
18.2.2获取目录和文件的属性信息 481
18.2.3遍历文件夹下的目录和文件(3种方法) 483
18.3处理目录 486
18.3.1目录的创建、删除、重命名和移动 486
18.3.2删除目录树 487
18.3.3处理当前网页所在目录 488
18.4处理文件 488
18.4.1文件的创建、删除、复制、重命名和移动 488
18.4.2向文件中添加数据 489
18.4.3读取文件内容 491
18.4.4文件下载 494
18.5测试题 494
第19章 使用PHP结合XML开发 495
19.1在PHP应用程序中处理XML文档的方法 496
19.1.1了解XML文档对象 496
19.1.2 DOM基于节点的浏览 498
19.1.3使用PHP DOM 498
19.2创建和保存XML文档对象 508
19.2.1使用字符串创建一个新的XML文档对象 508
19.2.2使用文件创建一个新的XML文档对象 509
19.2.3使用版本号和编码创建一个空的XML文档对象 509
19.2.4保存和写出一个XML文档对象 510
19.3使用XML对象数据内容 510
19.3.1遍历节点树 510
19.3.2使用getElementsByTagName方法 511
19.3.3使用XPath从XML文档中提取数据 511
19.3.4修改XML文档 512
19.4使用PHP SAX解析XML 517
19.4.1什么是SAX 517
19.4.2 SAX的工作原理 518
19.4.3使用SAX解析XML的通用步骤 519
19.4.4出错代码和常量 525
19.4.5 XML解析函数详解(见表19-19) 526
19.5测试题 535
第20章 使用PHP发送和接收电子邮件 537
20.1安装和使用SMTP服务 538
20.1.1安装SMTP服务 538
20.1.2配置SMTP服务 539
20.1.3配置Outlook使用本地SMTP服务发送邮件 542
20.1.4区分POP3和SMTP服务 542
20.2创建发送邮件的PHP应用程序 543
20.2.1 了解mail()函数 544
20.2.2创建简单的邮件发送程序 545
20.2.3 SMTP服务和mail()函数的工作原理 545
20.3创建增强的邮件发送程序 546
20.3.1安装和配置 547
20.3.2使用远程SMTP服务 547
20.3.3发送带附件的电子邮件 548
20.3.4发送多媒体邮件 550
20.3.5群发邮件 552
20.4使用POP3方式收信 554
20.5测试题 556
第21章 PHP事务和关键应用程序开发 557
21.1理解事务 558
21.1.1事务的工作过程 558
21.1.2事务的共同特点 559
21.2在PHP应用程序中使用事务 559
21.2.1在PHP网页中使用PDO自身事务处理系统 560
21.2.2使用数据库系统完成事务 562
21.3测试题 564
附录A PHP关键字列表 565
附录B 常用字符集速查表 569
附录C PHP支持的时区字符串列表 571
附录D php.ini核心配置选项说明 577
附录E 测试题答案 583
附录F 参考资料 597