第1篇 PHP动态网站和PHP程序语言基础入门篇 2
第1章 准备基础知识、开发环境及配置运行环境 2
1.1正确认识PHP动态网站开发 3
1.1.1正确认识PHP的开发工具 3
1.1.2正确认识PHP的运行环境 3
1.1.3关于标准和实现 3
1.2安装和配置PHP动态网站的运行环境 4
1.2.1下载和安装PHP应用程序服务器 4
1.2.2了解PHP的版本 5
1.2.3在Apache下配置PHP 6
1.2.4在IIS7.0下配置PHP 9
第2章 怎样创建和执行PHP动态网页——基本操作和基本原理 11
2.1创建第一个PHP网页 12
2.1.1用什么来创建PHP网页 12
2.1.2在哪里放置PHP网页 12
2.1.3通过服务器请求PHP网页 12
2.2 PHP网络应用程序的工作原理 13
2.2.1 Web应用程序的基本工作原理 13
2.2.2 PHP网络应用程序的基本工作原理 14
2.3怎样在PHP网页中编写PHP程序代码 15
2.3.1定义PHP执行块 16
2.3.2 PHP输出指令 17
2.3.3什么是script语言 17
2.3.4 PHP代码与HTML代码混合 18
第3章 程序开发的基石——声明变量和使用变量 19
3.1变量的声明 20
3.1.1声明和命名变量 20
3.1.2变量的命名规范 21
3.1.3变量的数据类型 21
3.1.4易犯的错误 24
3.2在程序中使用变量 26
3.2.1为变量赋值和更改变量值 26
3.2.2使用变量和获取变量值 27
3.2.3变量的初始化 28
3.3常量 28
3.3.1 PHP内建常量 29
3.3.2自定义常量 30
3.4变量的传值和传址 31
3.4.1传值变量——按值传递 31
3.4.2传址变量——按引用传递 31
3.4.3变量的引用 32
3.5内存使用规则——堆和栈 33
3.5.1栈的使用规则 33
3.5.2堆的使用规则 34
3.6数据类型转换 35
3.6.1强制数据类型转换 35
3.6.2隐式数据类型转换 35
3.7可变变量 36
第4章 PHP语法规范和良好的编程习惯 37
4.1空白和多行书写 38
4.1.1空白 38
4.1.2多行书写 38
4.2“->”语法 38
4.3卷曲花括号 39
4.3.1引号中包含变量 39
4.3.2用卷曲花括号界定变量名 39
4.4分号 40
4.5圆括号 40
4.6字母的大小写 41
4.7程序注释 41
4.7.1单行注释和尾随注释 41
4.7.2多行注释 41
4.7.3文档注释 42
4.7.4使用HTML注释 42
4.8关键字 43
4.9培养良好的编程习惯 43
4.9.1通用的变量名、方法名、类名命名约定 43
4.9.2重构 45
4.9.3使用注释 45
4.9.4养成控制内存的好习惯 46
4.9.5优化代码的一般常识 47
第5章 数据运算和运算规则 49
5.1 PHP表达式 50
5.1.1简单表达式和复合表达式 50
5.1.2赋值表达式和单值表达式 50
5.2算术运算符 50
5.3字符串运算符 52
5.4赋值运算符 53
5.5比较运算符和逻辑运算符 54
5.5.1考虑数据类型 55
5.5.2全等运算符 56
5.5.3易犯错的比较运算 57
5.6位运算符 57
5.7其他运算符 58
5.7.1三元条件运算符 58
5.7.2 instanceof运算符 59
5.8运算符的使用规则 59
5.8.1运算符优先级规则 59
5.8.2运算符结合规则 59
第6章 流程控制 61
6.1语句和语句块 62
6.2 if…else条件语句 62
6.3 switch条件语句 66
6.4 do…while循环 68
6.4.1第一种模式 68
6.4.2第二种模式 68
6.5 for循环 69
6.6 foreach循环 70
6.7其他的流程控制 70
6.7.1 break语句 71
6.7.2 continue语句 71
6.7.3 declare语句 72
6.7.4 try…catch…throw语句 72
6.7.5 goto语句 73
6.8流程控制总结 74
第2篇 PHP数据处理和函数应用篇 77
第7章 变量处理 77
7.1呈现变量的结构 78
7.2强制数据类型转换 79
7.2.1转换为整型 79
7.2.2转换为逻辑值 80
7.2.3转换为浮点数 80
7.2.4字符串转换 80
7.2.5转换为数组 80
7.2.6转换为对象 81
7.2.7字符串转换为数值 81
7.2.8使用settype()函数转换数据类型 81
7.2.9使用其他函数转换数据类型 81
7.3变量的数据类型判断 82
7.4判断变量是否为空 83
7.5 isset()语言结构和unset()语言结构 84
第8章 数组、多维数组、复合数组(哈希、映射) 85
8.1创建数组 86
8.1.1创建数组的基本方法 86
8.1.2索引数组 86
8.1.3多维数组 88
8.1.4复合数组 89
8.1.5删除数组或数组元素 91
8.2使用运算符进行数组运算 91
8.3数组操作函数 92
8.3.1常用的基本操作 94
8.3.2获取数组的元素数量 95
8.3.3分别获取数组的键和值 95
8.3.4遍历数组 96
8.3.5数组的排序 98
第9章 在PHP中使用正则表达式 102
9.1字符串处理函数 103
9.1.1加密算法 106
9.1.2使用数组语法处理字符串 107
9.2使用正则表达式处理字符串 107
9.2.1正则表达式基本语法 108
9.2.2优先权顺序 112
9.3使用函数处理正则表达式 113
9.3.1 Perl兼容正则表达式函数 113
9.3.2了解PCRE模式修正符 120
9.3.3使用正则表达式判断字符串是否是全中文 121
9.4 POSIX扩展正则表达式函数 121
思考与练习 122
第10章 处理日期和时间 123
10.1使用DateTime类处理日期和时间 124
10.1.1日期和时间操作中常用到的概念 124
10.1.2配置选项 125
10.1.3 DateTime类的构造方法 125
10.1.4格式化日期和时间 126
10.1.5修改日期和时间 128
10.2使用DateTimeZone类处理时区 129
10.3使用DateInterval类处理时间间隔 130
10.3.1 createFromDateString()方法 131
10.3.2 format()方法 131
10.3.3使用日期时间间隔改变DateTime 132
10.4使用DatePeriod类创建时期段 133
10.5用于处理日期和时间的相关函数 135
第11章 数学运算和其他常用全局函数 137
11.1数学运算函数 138
11.2其他常用函数 140
11.2.1中止执行当前网页代码——exit()函数和die()函数 140
11.2.2延迟执行——sleep()函数、usleep()函数、time_nanosleep()函数、time_sleep_until()函数 141
11.2.3生成唯一的ID——uniqid()函数 142
11.2.4二进制转换——pack()函数、unpack()函数 143
第12章 自定义函数及函数对变量的影响 145
12.1函数的定义 146
12.2函数的调用 146
12.2.1在函数中定义参数的初始值 147
12.2.2条件函数和嵌套函数 147
12.2.3可变长度参数和函数处理函数 148
12.2.4形参和实参 148
12.2.5匿名函数的定义 149
12.3变量的作用范围和生命周期 150
12.3.1 script级变量和局部变量 150
12.3.2全局变量 150
12.3.3静态变量 151
12.4在函数中使用引用 152
12.4.1在函数中传递引用 152
12.4.2函数返回引用 153
12.5函数定义的位置和共享——动态包含 154
12.5.1配置动态包含的目录 155
12.5.2被包含文件的位置和权限 155
12.5.3其他实现动态包含的语言结构 155
12.5.4被包含文件的返回值 156
第3篇 与Web页面、Ajax交互应用程序篇 158
第13章 人机交互的基石——动态网页的请求和响应 158
13.1了解请求和响应的基本过程 159
13.1.1请求和响应的基本过程 159
13.1.2了解URI、URL和URN 160
13.2 HTTP协议基础 161
13.2.1了解HTTP消息的内容 161
13.2.2了解HTTP请求的内容 162
13.2.3了解HTTP响应的内容 163
13.2.4了解HTTP消息报头的内容 165
13.3在PHP程序中获取和处理请求报头 166
13.4对请求作出响应 169
13.4.1返回消息正文给客户端 170
13.4.2返回响应状态行和响应报头给客户端 170
13.4.3缓存对消息报头的影响 171
13.4.4重定向 173
13.4.5设置响应内容的格式和类型 174
13.4.6遍历响应报头 174
13.5使用网页缓存优化网络程序 175
13.5.1服务器端网页缓存的处理 175
13.5.2最佳实践——缓存服务器端复杂运算 177
13.5.3客户端网页缓存的处理 178
思考与练习 180
第14章 使用HTML表单开发PHP交互式应用程序 181
14.1创建表单 182
14.1.1 HTML表单基本知识 182
14.1.2使用样式表控制表单的呈现 185
14.1.3创建访客留言表单 186
14.2接收表单数据 188
14.2.1了解POST和GET方法 188
14.2.2接收表单提交的数据——POST和GET方法 189
14.2.3易犯的错误——处理单名多值表单 191
14.2.4遍历表单变量 192
14.2.5处理结果不良好的控件 192
14.2.6其他处理表单的方法 193
14.2.7关于图形提交按钮 194
14.3使用PHP实现文件上传 194
14.4关于register_globals配置 197
思考与练习 198
第15章 人机交互的状态维护——Session、Cookie和状态管理 199
15.1理解Session和Cookie 200
15.1.1什么是Cookie 200
15.1.2什么是Session 201
15.1.3了解Cookie的格式和内容 201
15.1.4 Session和Cookie的使用环境 203
15.2使用Cookie完成状态管理 203
15.2.1怎样传送和使用Cookie 204
15.2.2创建Cookie 205
15.2.3访问Cookie 205
15.2.4设置Cookie路径 206
15.2.5易犯的错误——检查浏览器是否接受Cookie 206
15.3使用Session完成状态管理 208
15.3.1激活PHP网页中的Session支持 208
15.3.2怎样传送和使用Session 209
15.3.3创建和管理Session 212
15.3.4启动和结束Session 214
15.3.5 Session的相关配置 215
15.3.6管理Session的相关函数 218
15.3.7使用URL参数传递Session ID 222
15.4其他维护状态的方法 222
15.5易犯的错误 223
思考与练习 223
第16章 JavaScript、Ajax、jQuery和PHP之间的交互 224
16.1一个标准的Ajax应用所应具备的步骤 225
16.1.1编写PHP程序处理Ajax请求和作出响应 226
16.1.2编码混乱问题的解决 227
16.1.3使用代理实现跨域请求 227
16.2使用JSON编码 228
16.2.1对JSON格式的字符串进行解码 229
16.2.2对变量进行JSON编码 229
16.2.3处理解析错误 230
16.2.4客户端数据处理 230
16.3开发j Query for PHP程序 231
第17章 使用HTML5服务器推送技术和Web Socket实现交互操作 233
17.1服务器推送技术 234
17.1.1使用Server-Sent Event入门 234
17.1.2服务器要求 235
17.1.3使用EventSource对象 236
17.2 Web Socket套接字连接 237
17.2.1使用Web Socket入门 237
17.2.2关于Web Socket通信协议 239
第4篇 PHP面向对象开发、模式和应用篇 242
第18章 面向对象编程(OOP)——创建类和使用类 242
18.1澄清——必须首先建立正确的面向对象编程思想 243
18.1.1对象的抽象 243
18.1.2对象的使用 244
18.1.3易犯的错误——不要让“一切皆是对象”变成了“一切皆是类” 244
18.1.4面向对象程序设计的优点和基本特征 245
18.1.5对比——面向对象和结构化程序设计的区别 245
18.2创建类 246
18.2.1创建一个PHP类 246
18.2.2类的定义 247
18.2.3易犯的错误——类与PHP执行块 248
18.3类的使用 249
18.3.1怎样创建类的实例 249
18.3.2访问对象属性 250
18.3.3访问对象方法 250
18.3.4访问常量、静态方法和访问静态属性 250
18.3.5在类体中使用关键字$this 250
18.3.6使用可变变量访问成员 251
18.4属性的初始化 252
18.4.1内联方式初始化属性 253
18.4.2实例化时初始化属性 253
18.5定义方法 253
18.5.1方法参数的类型提示 254
18.5.2构造方法和析构方法 255
18.5.3易犯的错误 257
18.6对象成员的迭代 258
18.7 PHP 5和PHP 4在使用对象上的不同 258
第19章 建立更可靠的OOP程序——类和成员的访问控制 260
19.1了解成员访问控制 261
19.2 public成员(公共成员) 262
19.3 private成员(私有成员) 262
19.4 protected成员(受保护的成员) 263
第20章 重复使用类——继承和组合 265
20.1类的继承 266
20.1.1创建子类 266
20.1.2使用基类的构造器方法 267
20.1.3使用关键字parent访问基类 267
20.1.4关于多重继承的错误认识 268
20.1.5检测继承关系 269
20.1.6创建子类时的注意事项 269
20.1.7扩展内建PHP类 270
20.2在类中使用final修饰符禁止继承 270
20.3类的组合 271
20.3.1实现类的组合 271
20.3.2组合的优点 272
20.3.3了解is-a和has-a 272
20.3.4关于聚合和组合 272
第21章 静态成员、静态类和枚举 273
21.1为什么要定义静态成员和静态类 274
21.2创建静态成员 274
21.2.1访问静态成员 275
21.2.2易犯的错误——使用静态成员时的注意事项 275
21.2.3静态成员的特殊用途 276
21.2.4静态成员和继承 276
21.2.5后期静态绑定 277
21.3静态类 278
21.4枚举 279
21.4.1创建枚举 279
21.4.2使用枚举的优点 280
第22章 多态——重载和覆载 281
22.1方法的重载 282
22.1.1重载参数列表的数量 282
22.1.2重载参数列表的数量和类型 283
22.1.3静态方法重载 284
22.2重写方法 285
第23章 接口和抽象——错误最深重的地方 288
23.1创建和实现接口 289
23.1.1接口的定义 289
23.1.2接口的实现 289
23.1.3常量的实现 290
23.1.4在接口和实现接口的类中使用默认参数值 290
23.1.5接口的合并 291
23.2创建抽象类 291
23.3接口和抽象类的区别 292
23.3.1用一句话来区分接口和抽象类 293
23.3.2唯一能使用抽象类的地方 293
第24章 类、接口、函数和常量的组织——命名空间 296
24.1为什么要使用命名空间——预防冲突 297
24.2创建命名空间 297
24.2.1定义命名空间 298
24.2.2使用命名空间实现合理的分类管理 300
24.2.3命名空间的命名 301
24.3使用命名空间 301
24.3.1引用命名空间 301
24.3.2命名空间使用的优先策略 302
24.3.3使用namespace关键字和NAMESPACE常量 303
24.3.4导入命名空间 303
24.3.5名称解析规则 304
第25章 密封类和动态类 306
25.1动态属性 307
25.1.1使用魔术方法_get()和_set() 307
25.1.2使用魔术方法_isset()和_unset() 307
25.2动态方法 309
25.3创建密封类 309
第26章 使用魔术方法 310
26.1类的自动加载和重用 311
26.2转换为字符串 311
26.2.1 _set_state()魔术方法 312
26.2.2 _invoke()魔术方法 313
26.3序列化和逆序列化 314
26.3.1执行序列化和逆序列化 314
26.3.2自定义序列化和逆序列化 314
26.4对象的克隆 316
26.4.1浅表克隆 316
26.4.2深度克隆 316
26.4.3使用魔术方法_clone() 317
第27章 反射 319
27.1反射要实现什么 320
27.2反射API 320
27.3用于实现反射的函数 327
第28章 PHP设计模式 330
28.1单体模式 331
28.2工厂模式 332
28.2.1简单工厂模式 333
28.2.2工厂方法模式 334
28.2.3抽象工厂模式 335
28.3建造者模式 336
28.4观察者模式 337
28.5装饰模式 338
第5篇 PHP和MySQL数据库应用集成篇 342
第29章 安装、配置和使用MySQL数据库服务器 342
29.1安装和配置MySQL数据库服务器 343
29.2使用MySQL数据库服务器 344
29.2.1连接MySQL服务器 344
29.2.2修改密码 345
29.2.3用户账户管理 345
29.2.4数据类型 346
29.2.5数据库操作 348
29.2.6 MySQL数据备份与恢复 349
第30章 使用phpMyAdmin管理MySQL 352
30.1配置phpMyAdmin 353
30.2创建数据库 355
30.3设计数据库结构 355
30.4录入数据 356
第31章 使用PDO接口访问数据库 357
31.1配置PHP使用PDO 358
31.2数据库连接和配置数据源 358
31.2.1数据库连接 358
31.2.2数据库连接驱动 359
31.3基本数据库查询操作 360
31.3.1查询和显示数据记录 360
31.3.2遍历列出数据表的内容 360
31.4修改数据 361
31.4.1插入数据记录 361
31.4.2更新数据记录 362
31.4.3删除数据记录 363
31.4.4插入和显示数据库中的图片(处理二进制数据) 364
31.5操作数据库结构 366
31.6在PHP中应用PDO的基本步骤 366
31.6.1创建连接 367
31.6.2执行查询或更新 370
31.6.3处理结果 371
31.6.4关闭连接 371
31.7其他常用数据库连接的连接方式 372
31.7.1连接到SQL Server和Sybase数据库 372
31.7.2连接到Firebird和Interbase数据库 372
31.7.3连接到IBM DB2数据库 372
31.7.4连接到Oracle数据库 373
31.7.5连接到ODBC或DB2数据库 373
31.7.6连接到PostgreSQL数据库 373
31.7.7连接到SQLite数据库 374
31.8通过ODBC连接MySQL数据库 374
第32章 数据库设计和SQL语法 377
32.1数据库设计基本知识 378
32.1.1关于数据库 378
32.1.2设计数据库 379
32.2 SQL语法入门 381
32.2.1语法基础知识 382
32.2.2定义记录集的列 383
32.2.3限制记录集中的记录 384
32.2.4对记录集中的记录进行排序 385
32.2.5联接表 385
32.3创建和使用SQL存储过程 389
32.3.1使用命令行创建存储过程 390
32.3.2为存储过程定义参数 391
32.3.3调用存储过程 391
32.3.4为调用存储过程定义参数 392
32.4 SQL注入缺陷和参数化查询 394
32.4.1基本的SQL注入预防措施 394
32.4.2使用参数化查询预防SQL注入 395
32.4.3关于魔术引号和magic_quotes_gpc导致的SQL注入 396
思考与练习 397
第33章 深入探究PDO 398
33.1了解PDO编程模型 399
33.1.1了解PDO类 399
33.1.2了解PDOStatement类 399
33.1.3了解PDOException类 400
33.2使用预处理语句和参数化查询 400
33.2.1使用预处理 401
33.2.2指定参数和实现参数化查询 401
33.3游标和数据提取 403
33.3.1游标的类型 404
33.3.2数据提取方法 404
33.3.3数据提取方法和提取模式的配合 406
33.3.4关于元数据 413
33.4关于PDO连接属性 414
33.4.1字段名区分大小写 414
33.4.2了解PDO持久连接 415
33.5错误和错误处理 415
第34章 结果集分页实用模块 417
34.1结果集分页的方式 418
34.2结果集分页的技术原理 418
34.3结果集分页的范例 419
34.4使用LIMIT子句分页 422
第35章 使用MySQL数据库函数和MySQLi扩展 426
35.1配置MySQL数据库函数 427
35.1.1 MySQL函数运行时配置 427
35.1.2 MySQL函数资源类型 427
35.1.3预定义常量 428
35.2基本数据库查询操作 428
35.2.1查询和显示数据记录 428
35.2.2遍历列出数据库内容 429
35.3修改数据 430
35.3.1插入数据记录 430
35.3.2更新数据记录 431
35.3.3删除数据记录 431
35.3.4插入和显示数据库中的图片(二进制数据) 432
35.3.5使用MySQL数据库函数操控数据库的基本步骤 434
35.4使用MySQLi扩展 437
35.4.1 MySQLi运行时配置 437
35.4.2 MySQLi基本的使用方法 438
35.4.3使用MySQLi类 440
35.4.4使用mysqli_stmt类 441
35.4.5使用mysqli_result类 442
第6篇 PHP基础架构、扩展和框架应用篇 444
第36章 PHP网络应用程序基础架构 444
36.1 PHP网络应用程序的三层架构模型 445
36.2从C/S架构到B/S架构 446
36.2.1从三层架构到N层架构 448
36.2.2 PHP网页在三层架构中的地位 448
第37章 PHP扩展——PECL和PEAR 449
37.1使用PHP扩展 450
37.2安装和使用PEAR扩展 451
37.2.1安装PEAR环境 451
37.2.2管理PEAR扩展 452
37.2.3使用扩展包 452
第38章 使用PHP发送和接收电子邮件 453
38.1安装和使用SMTP服务 454
38.1.1安装SMTP服务 454
38.1.2配置SMTP服务 455
38.1.3配置Outlook使用本地SMTP服务发送邮件 456
38.1.4区分POP3和SMTP服务 457
38.2创建发送邮件的PHP应用程序 458
38.2.1了解mail()函数 458
38.2.2创建简单的邮件发送程序 459
38.2.3 SMTP服务和mail()函数的工作原理 460
38.3创建增强的邮件发送程序 460
38.3.1安装和配置 461
38.3.2使用远程SMTP服务 461
38.3.3发送带附件的电子邮件 462
38.3.4发送多媒体邮件 463
38.3.5群发邮件 465
38.4使用POP3方式收信 466
第39章 使用PHP操作文件系统 468
39.1了解目录和文件的路径 469
39.2获取目录和文件的信息 470
39.2.1获取磁盘的总大小和可用空间 470
39.2.2获取目录和文件的属性信息 470
39.2.3遍历文件夹下的目录和文件 471
39.3处理目录 474
39.3.1目录的创建、删除、重命名和移动 474
39.3.2删除目录树 475
39.3.3处理当前网页所在目录 476
39.4处理文件 476
39.4.1文件的创建、删除、复制、重命名和移动 476
39.4.2向文件中添加数据 477
39.4.3读取文件内容 479
39.4.4文件下载 480
第40章 使用W3C DOM处理XML文档 482
40.1一切皆是节点——学习DOM的首要认识 483
40.1.1 DOM API的节点类型 483
40.1.2节点的层次关系 483
40.1.3 DOM基于节点的浏览 484
40.2使用PHP DOM处理XML文档 485
40.2.1 PHP DOM API 486
40.2.2使用字符串创建一个新的DOM文档对象 494
40.2.3使用文件创建一个新的DOM文档对象 495
40.2.4使用版本号和编码创建一个空的DOM文档对象 495
40.2.5保存和写出一个DOM文档对象 495
40.2.6遍历节点树 496
40.2.7使用XPath从XML文档中提取数据 499
40.3修改XML文档 499
40.3.1添加新节点 499
40.3.2为元素节点添加新属性 500
40.3.3通过克隆的方法创建节点 501
40.3.4修改XML文档中的节点、内容和值 502
40.3.5删除XML文档中的节点、内容和值 503
第41章 使用SAX处理XML文档 504
41.1什么是SAX 505
41.2使用SAX解析XML的通用步骤 507
41.2.1出错代码和常量 511
41.2.2 SAX解析函数详解 512
第42章 使用Zend框架 518
42.1安装和配置Zend框架 519
42.2使用Zend框架 519
第7篇 PHP程序调试、优化和部署篇 524
第43章 处理程序异常——建立可靠的应用程序 524
43.1错误和异常情况 525
43.2异常情况处理 526
43.2.1使用try…catch语句 526
43.2.2使用throw语句 527
43.2.3何时使用异常捕捉 528
43.2.4自定义捕捉异常的方法 528
43.2.5自定义捕捉错误的方法 529
43.2.6将出错信息写入日志 530
43.2.7错误控制运算符 531
43.3使用Exception处理异常错误信息 531
43.4条件catch语句 532
第44章 使用Zend Debugger调试PHP程序代码——原理与范例 533
44.1调试PHP的方法 534
44.1.1使用出错信息 534
44.1.2服务器日志 535
44.1.3断点调试 535
44.2配置PHP调试环境 535
44.2.1安装和配置Zend Debugger 536
44.2.2安装和配置Zend Studio 537
44.3使用Zend Studio进行调试 538
44.3.1调试操作 539
44.3.2调试工具栏 540
44.3.3查看变量 541
44.3.4设置断点 541
44.3.5监控变量 542
44.3.6调用堆栈窗口 542
44.4使用script调试工具范例实战 543
44.4.1定义一个用于调试的PHP范例网页 543
44.4.2调试实战 544
第45章 PHP事务和关键应用程序开发 548
45.1理解事务 549
45.1.1事务的工作过程 549
45.1.2事务的共同特点 549
45.2在PHP应用程序中使用事务 550
45.2.1在PHP网页中使用PDO自身事务处理系统 551
45.2.2使用数据库系统完成事务 552
第46章 PHP网络应用程序的安全 554
46.1身份验证和授权 555
46.1.1了解Apache提供的身份验证功能 555
46.1.2关于匿名访问站点 555
46.1.3创建基本身份验证站点 555
46.1.4摘要式身份验证 559
46.1.5分级访问控制 562
46.1.6使用表单的身份验证和基于角色的授权系统 562
46.2传输过程中的加密 562
46.2.1加密的工作原理 563
46.2.2安全证书的工作原理 564
46.2.3使用隐私和安全证书 564
46.3配置Apache支持SSL 564
46.3.1安装OpenSSL 565
46.3.2创建服务器证书和私钥 565
46.3.3配置Apache和mod_ssl 567
46.3.4信任自签名证书 569
46.3.5创建CA 571
46.3.6使用CA签名和颁发证书 572
46.3.7在客户端安装根证书 573
46.4使用浏览器证书 574
46.4.1使用浏览器证书的注意事项 575
46.4.2创建浏览器证书 575
46.4.3安装浏览器证书 575
46.4.4启用浏览器证书 576
46.4.5使用客户证书映射 580
第47章 PHP网页的国际化、区域化和多国语言包 582
47.1了解网页字符编码 583
47.1.1计算机文字字符编码简介 583
47.1.2文档字符集和选择字符编码 585
47.1.3在HTML文档中使用字符引用 585
47.2字符编码和PHP网页 586
47.2.1指定网页字符编码 586
47.2.2字符编码的优先级 587
47.2.3乱码产生的根源和解决方案 587
47.2.4为PHP网页实际编码 588
47.2.5创建多语言网站 588
47.3区域化设置和PHP网页 590
47.3.1国际化和区域化设置 590
47.3.2区域化设置和字符集的匹配 591
47.3.3使用setlocale()函数设置区域化 593
47.4创建PHP网页实现国际化和区域化 594
47.4.1了解国际化和区域化的相关函数 594
47.4.2制作资源包 595
47.4.3放置资源包 598
思考与练习 598
附录A 保留的PHP关键字 599
附录B 常用字符集速查表 600
附录C PHP支持的时区字符串列表 601
附录D php.ini核心配置选项说明 607
附录E 区域标识符对照表 612
附录F Linux+Apache+MySQL+ PHP(LAMP)安装和配置 614
F.1安装和配置Apache 614
F.2安装和配置PHP 615
F.3安装和配置MySQL 617
附录G关于PHP 6的介绍 618
附录H参考文献以及资料来源 619
参考网址 619
参考图书 620
参考规范及标准 621