《PHP 5完全攻略》是2010年电子工业出版社出版的图书,作者是杜江。
基本介绍
- 中文名:PHP 5完全攻略
- 作者:杜江
- 出版社:电子工业出版社
- 版次:3
- 出版时间:第1版 (2010年5月1日)
- 平装: 659页
- ISBN:7121107821, 9787121107825
- 开本:16开
内容简介
《PHP 5完全攻略(畅销书升级版)》是目前第一本真正介绍PHP 5及MySQL 5新增语法与功能的中文版本权威宝典!《PHP 5完全攻略(畅销书升级版)》本着精、全、要三宗旨,从理论中延伸,从实践中深入,翔实并完善地描述了PHP 5的开发特性与MySQL 5资料库。《PHP 5完全攻略(畅销书升级版)》分为两大部分,第1部分主要阐述PHP开发的基础知识,如PHP数组与表单处理、PHP 5面向对象开发、Ajax、CLI、字元流处理、加密技术、图片处理及PHP代码最佳化,以及存储过程、游标、事务等进阶内容;书中第2部分的开发实例是作者开发的原创作品,该部分内容不仅会令读者的开发水平有所增进,而且可在案例的基础上进行二次开发,做出符合自己业务的网站系统。
《PHP 5完全攻略(畅销书升级版)》既可作为初学者或刚刚从其他语言转做PHP开发的程式设计师和软体工程师的学习参考书,也可作为掌握PHP 5的进阶套用及高级知识的案上学习指南。
编辑推荐
《PHP 5完全攻略(畅销书升级版)》:彻夜不眠的封闭开发,睡梦中还在思考的业务聚合,除了加油努力,有时候我们忘了还要什幺,那不仅是客户端和伺服器的脚泰,还有我们的真爱,还有想要的生活,谨以《PHP 5完全攻略(畅销书升级版)》献给所有辛勤工作、努力学习的PHP开发者。
媒体推荐
对所有的PHPer来说,这是一本极好的书。杜江先生手持利刃,将PHP 5的主方面面给大家一一剖析,并辅以实例,一深入浅出,更浅显易懂,因而本书很适合PHP初学者阅读学习,同时对PHP工作者来说,这也是一本非常有价值的案头宝典。衷心祝愿每位读者都能通过这本书掌握PHP这把利刃!
——爱好者网技术总监 乔楚
PHP与MySQL已经是一个世界流行的Web开发黄金组合,杜江先生在书中结合了大量实际开发 经验,由浅至I深,结合大量实例全方位阐述了PHP 5和MySQL 5。本书既是初学者全面学习和深入掌握PHP 5的教学材料,也可作为专业PHP工作者的参考手册,特向广大PHPer推荐。
——圣博网总工程师 马明练
感谢杜江先生为广大PHP开发者和爱好者带来如此详细且实用的书。赶集网是由PHP 5和MySQL 5开发的,这其中有杜江先生工作的很多成果。希望这本书能让更多喜爱PHP朋友更快更深入地掌握PHP,进而涌现更多基础扎实、功力深厚的PHP人才。
——赶集网技术主管 李静
英才辈出,汇聚极品。杜江先生是在英极奋斗中的精英人才之一,有着丰富的项目开发经验,PHP功底深厚,谙熟大型网部构建,关于使用Open Source软体构建分布套用。这本《PHP 5完全攻略》是他多年工作经验的总结,希望这本书能成为众多PHP技术书中的不二之选。
——英极软体技术总监 王昕宇
目录
第1部分 PHP 5基础
第一篇 PHP 5基础知识
第1章 PHP 5概述 3
1.1 什幺是PHP 3
1.1.1 PHP的历史 3
1.1.2 PHP的优点 4
1.1.3 PHP的精神 5
1.1.4 PHP与Web 2.0 6
1.2 PHP 5的新特性 7
1.2.1 新的面向对象模式 7
1.2.2 新的面向对象特性 7
1.2.3 其他新特性 11
1.2.4 PHP 5.3新特性 12
1.2.5 MySQL 5.1新特性 12
1.3 PHP 5的扩展库 13
1.3.1 XML扩展 13
1.3.2 SPL 14
1.3.3 MySQLi扩展 15
1.3.4 PDO资料库抽象层 15
1.3.5 JSON扩展 15
1.4 PHP 5外部扩展库 15
1.4.1 PECL扩展 15
1.4.2 PEAR扩展 16
1.5 PHP 5的其他更新 16
1.5.1 Zend引擎2.x 16
1.5.2 新的记忆体管理器 16
1.5.3 Zend Optimizer与Zend Core 17
1.6 PHP与WEB伺服器 17
1.6.1 Apache 17
1.6.2 Microsoft IIS 17
1.6.3 其他Web伺服器 18
1.7 PHP 5安装与配置 18
1.7.1 Win32平台下Apache环境安装 18
1.7.2 Win32平台下IIS环境安装 35
1.7.3 使用集成化安装包 38
1.7.4 FreeBSD平台 39
1.7.5 Linux平台 45
1.8 PHP配置与初步最佳化 48
1.9 其他需注意的问题 48
1.10 PHP开发工具 49
1.11 小结 54
第2章 PHP 5开发基础 55
2.1 PHP初相遇 55
2.2 几个技术点 56
2.2.1 PHP语句 57
2.2.2 空格与空行 57
2.2.3 注释 57
2.2.4 函式调用 58
2.3 变数与变数名 58
2.4 变数的赋值 59
2.5 变数的引用赋值 59
2.6 PHP的数据类型 60
2.7 标量数据类型 60
2.7.1 整型 60
2.7.2 浮点型 60
2.7.3 字元串型 61
2.7.4 布尔型 61
2.8 複合数据类型 61
2.8.1 数组 61
2.8.2 对象 62
2.9 特殊数据类型 63
2.9.1 NULL 63
2.9.2 资源 63
2.10 变数列印与输出 64
2.10.1 使用echo函式 64
2.10.2 使用print函式 64
2.10.3 echo和print的区别 64
2.10.4 使用printf函式 65
2.10.5 使用sprintf函式 65
2.10.6 显示数组与对象 66
2.11 变数操作符 67
2.11.1 算术运算符 67
2.11.2 赋值操作符 68
2.11.3 字元串连线 68
2.11.4 字元串换行连线 68
2.11.5 花括弧的作用 69
2.11.6 单引号与双引号 70
2.11.7 HereDoc 70
2.11.8 转义操作符 71
2.11.9 格式控制符 71
2.11.10 递增与递减操作符 72
2.11.11 三元操作符 72
2.11.12 比较运算符 73
2.11.13 布尔运算符 74
2.11.14 位操作符 75
2.12 数据类型自动转换 76
2.13 数据类型强制转换 77
2.13.1 转换为整型数据 78
2.13.2 用intval()函式取整 78
2.13.3 转换为浮点型数据 78
2.13.4 转换为布尔型数据 79
2.13.5 转换为字元串型数据 79
2.13.6 转换为数组 79
2.13.7 转换为对象 80
2.14 超级全局数组 80
2.14.1 $_SERVER超级全局变数数组 81
2.14.2 修改全局数组的值 84
2.15 变数与脚本处理 84
2.15.1 使用isset()函式检测变数定义 84
2.15.2 使用unset()函式删除变数 85
2.15.3 使用empty()函式检测变数值是否为空 85
2.15.4 其他检测类函式族 85
2.16 常量 85
2.16.1 定义常量 86
2.16.2 PHP魔术常量 86
2.17 PHP的控制结构 87
2.17.1 分支结构语句 87
2.17.2 循环结构语句 92
2.18 包含控制语句 97
2.18.1 include与require 97
2.18.2 include_once与require_once 98
2.18.3 eval() 98
2.18.4 中止脚本的执行:exit()与die() 99
2.19 函式 99
2.19.1 函式的命名 100
2.19.2 函式的结构 100
2.19.3 从函式中返回值 101
2.19.4 函式参数的传递 102
2.19.5 函式与全局变数 106
2.19.6 函式的静态变数 107
2.19.7 函式中使用常量 108
2.19.8 递归函式 109
2.19.9 解决函式重名的方法 109
2.20 可变变数 110
2.21 字元串操作 110
2.21.1 手动转义字元串数据 110
2.21.2 自动转义字元串数据 111
2.21.3 数值转换字元串 112
2.21.4 字元串序列化 112
2.21.5 清理字元串中的空格 113
2.21.6 格式化字元串 114
2.21.7 字元串切分 114
2.21.8 字元串截取 115
2.21.9 计算字元串的长度 115
2.21.10 字元串单词统计 116
2.21.11 字元串查找 117
2.21.12 字元串处理 118
2.22 日期与时间 123
2.22.1 UNIX时间戳 123
2.22.2 日期函式 124
2.22.3 时间函式 127
2.23 网路相关处理 130
2.23.1 header()函式 130
2.23.2 处理URL字元串 132
2.23.3 获得PHP环境信息 134
2.24 其它操作符 135
2.24.1 @-错误抑制符 135
2.24.2 执行外部命令 135
2.25 小结 136
第3章 正则表达式 137
3.1 正则表达式简介 137
3.2 正则表达式功能 137
3.3 POSIX正则表达式 138
3.3.1 ^和$定位符 138
3.3.2 POSIX量词 138
3.3.3 方括弧表达式 139
3.3.4 预定义字元簇 140
3.3.5 POSIX正则表达式函式 140
3.4 PCRE正则表达式函式 142
3.4.1 PCRE字元类 142
3.4.2 PCRE匹配 142
3.4.3 PCRE正则表达式函式 143
3.5 正则表达式VS函式 149
3.6 创建BBCODE 149
3.7 小结 150
第4章 PHP数组 151
4.1 什幺是数组 151
4.2 数组的类型 152
4.2.1 数字索引数组 152
4.2.2 关联数组 152
4.3 数组的构造 153
4.3.1 一维数组 153
4.3.2 二维数组与多维数组 154
4.3.3 多维数组 159
4.4 快速创建数组 161
4.4.1 使用range()函式 161
4.4.2 为数组追加数据 162
4.4.3 修改数组内容 162
4.5 访问和处理数组内容 162
4.5.1 数字索引数组排序 162
4.5.2 关联数组排序 163
4.5.3 数组随机抽取shuffle()和array_rand() 164
4.5.4 统计数组元素出现的次数 165
4.5.5 数组联合array_combine 166
4.5.6 数据合併array_merge 166
4.5.7 查找数组中键名是否存在 167
4.5.8 查找数组值是否存在 168
4.5.9 计算数组中数值元素的和 169
4.5.10 去除数组中重複的元素值 169
4.5.11 移动数组内部指针 170
4.5.12 取得关联数组的键名 170
4.5.13 访问数组的键名和元素 170
4.5.14 判断数组的类型 171
4.5.15 显示数组内容与结构 171
4.5.16 移除数组中的指定元素 173
4.5.17 在数组顶部插入元素 174
4.5.18 在数组任意位置插入元素 174
4.5.19 数组元素的统计count()函式和sizeof()函式 175
4.5.20 数组键名与值的对调array_flip()函式 175
4.5.21 对数组元素分组统计array_values()函式 176
4.5.22 删除数组首末尾元素 177
4.5.23 删除数组中任意位置的元素 177
4.5.24 将数组内容导出为变数extract()函式 179
4.6 数组遍历(使用FOREACH) 180
4.6.1 一维索引数组的遍历 180
4.6.2 一维关联数组的遍历 181
4.7 使用FOR语句对数组遍历 182
4.8 使用FOR语句实现树状选单 182
4.9 数组遍历LIST()和EACH() 184
4.10 数组复位RESET()函式 185
4.10.1 each() 185
4.10.2 list() 185
4.11 FOREACH与FOR语句对数组处理的比较 186
4.12 数组内容过滤 186
4.13 小结 188
第二篇 PHP 5核心套用与规范
第5章 表单——处理用户输入 190
5.1 表单与HTML 190
5.2 表单与PHP 190
5.3 表单设计 191
5.3.1 文本框 191
5.3.2 密码文本框 191
5.3.3 单选项 192
5.3.4 複选项 192
5.3.5 下拉列表 193
5.3.6 表单属性 194
5.3.7 提交与复位按钮 194
5.4 GET与POST方法 195
5.4.1 使用GET方法 195
5.4.2 使用POST方法 199
5.4.3 POST方法和GET方法混合使用 200
5.4.4 POST方法和GET方法的区别 202
5.4.5 选择POST还是GET 202
5.5 动态生成表单 202
5.6 表单的处理方法 205
5.6.1 检查表单提交的来源 205
5.6.2 一个完整表单处理 206
5.7 其他处理表单的方法 208
5.7.1 使用import_request_variables()函式 208
5.7.2 使用extract()函式 209
5.8 多页面间传递数据 210
5.9 验证表单数据 210
5.9.1 客户端验证 210
5.9.2 伺服器端验证 211
5.9.3 避免表单重複提交 211
5.9.4 表单过期的处理 213
5.9.5 判断表单动作的技巧 213
5.10 表单安全 214
5.10.1 处理全局性错误 214
5.10.2 预防SQL注入 217
5.11 开发安全的代码 218
5.11.1 用户输入验证 218
5.11.2 高级数据验证:使用ctype 218
5.11.3 数据过滤 - PECL filter扩展 219
5.11.4 input_get()函式 220
5.11.5 路径检测 221
5.11.6 魔法引用magic_quotes_gpc 221
5.11.7 其他高效的解决方案 221
5.12 小结 222
第6章 PHP加密技术 223
6.1 MD5算法 223
6.2 SHA-1算法 223
6.3 CRACKLIB扩展库 224
6.4 MCRYPT扩展与DES算法 224
6.4.1 mcrypt加密扩展 225
6.4.2 mcrypt加密模式 225
6.4.3 mcrypt初始化向量 226
6.4.4 mcrypt加密与解密方法 227
6.5 小结 228
第7章 PHP国际化与本地化 229
7.1 I18N和L10N 229
7.2 字元集与编码 229
7.2.1 ASCII字元集 230
7.2.2 ISO-8859字元集 230
7.2.3 ANSI编码 230
7.2.4 GB2312与GBK编码 230
7.2.5 Unicode字元集 231
7.2.6 正确使用档案编码 232
7.3 GETTEXT扩展库 232
7.3.1 设定gettext 233
7.3.2 php_gettext函式集 233
7.3.3 编写I18N程式 233
7.3.4 设定gettext po档案 234
7.4 系统本地化函式族 236
7.4.1 setlocale()函式 236
7.4.2 货币值本地化 237
7.4.3 使用pc_format_currency( )函式 238
7.5 ICONV()函式 239
7.6 MBSTRING扩展库 240
7.6.1 使用mbstring进行字元串截取 240
7.6.2 检测字元串编码 241
7.6.3 mbstring转换编码 241
7.7 小结 242
第8章 PHP开发规范 243
8.1 代码结构 243
8.1.1 一个脚本服务全部 243
8.1.2 分离显示逻辑 244
8.2 良好的编码风格与样式 244
8.2.1 代码注释 245
8.2.2 代码缩进 246
8.2.3 使用必要的空格 246
8.2.4 SQL编写规范 247
8.2.5 控制结构 247
8.2.6 函式的命名 247
8.2.7 类命名规范 248
8.2.8 减少出错的技巧 248
8.3 小结 249
第9章 PHP 5面向对象开发 250
9.1 面向对象基础 250
9.2 PHP 5 面向对象编程概述 251
9.2.1 类的封装 251
9.2.2 类的继承 251
9.3 对象 251
9.4 创建和使用类 252
9.5 类的结构与定义 252
9.6 成员方法 252
9.7 成员变数与属性 253
9.8 $THIS关键字 254
9.9 构造方法 254
9.10 析构方法 256
9.11 类的继承与多态 256
9.11.1 类的继承——extends 256
9.11.2 数据的隐藏 258
9.11.3 访问成员变数的约束 258
9.11.4 设定访问成员方法 259
9.11.5 类常量 260
9.11.6 静态成员变数 260
9.11.7 静态成员方法 262
9.12 对象传递 262
9.13 克隆一个对象——CLONE 263
9.14 对象的比较 263
9.15 对象类型的检测——INSTANCEOF 264
9.16 克隆一个成员方法 264
9.17 类的多态性 265
9.18 PARENT::与SELF::关键字 267
9.19 抽象方法与抽象类 267
9.20 接口的实现 269
9.21 实现多个接口 270
9.22 FINAL方法 272
9.23 FINAL类 272
9.24 例外与异常处理 273
9.25 方法中声明类的类型 274
9.26 重载与多态 275
9.27 魔术方法 275
9.27.1 _ _get()与_ _set()方法 275
9.27.2 _ _call()方法 276
9.27.3 _ _sleep()与_ _wakeup()方法 277
9.27.4 _ _toString()方法 277
9.27.5 _ _autoload()方法 278
9.28 类映射API REFLECTION 279
9.29 小结 286
第10章 PHP会话管理 287
10.1 概述 287
10.2 COOKIE管理 287
10.2.1 什幺是Cookie 288
10.2.2 Cookie工作原理 288
10.2.3 Cookie套用开发 288
10.2.4 一个通用的Cookie类 292
10.2.5 解决方案 293
10.3 SESSION管理 294
10.3.1 什幺是Session 294
10.3.2 Session配置 295
10.3.3 Session套用 297
10.3.5 Session编码与解码 300
10.3.6 Session中保存数组 300
10.3.6 Session中保存对象 301
10.3.7 Session存取最佳化 303
10.3.8 多伺服器下共享Session 304
10.3.9 Session安全 307
10.4 小结 308
第11章 PHP输入输出缓冲 309
11.1 缓冲技术简介 309
11.2 从缓冲读取内容 310
11.3 使用回调函式 311
11.4 输出回调函式 311
11.5 压缩内容输出 312
11.6 小结 312
第12章 档案系统与字元流 313
12.1 档案与路径 313
12.1.1 分析一个档案的名称与扩展名 313
12.1.2 利用PHP自带函式分析当前路径 314
12.1.3 显示相对路径的真实路径 314
12.2 档案类型与相关信息 314
12.2.1 filesize()——计算档案的大小 315
12.2.2 取得档案的建立、最后访问与更新时间 315
12.2.3 fileperms()——档案属性以及许可权 315
12.2.4 取得档案所有者(Owner) 315
12.3 档案的顺序读写 315
12.3.1 档案打开与写入 315
12.3.2 档案输出 317
12.3.3 读取档案内容 318
12.4 档案的非线性读写 318
12.4.1 fseek()函式 319
12.4.2 ftell()函式 319
12.4.3 rewind()函式 319
12.4.4 parse_ini_file()函式 320
12.5 自定义日誌记录 321
12.6 目录和磁碟操作 321
12.6.1 disk_free_space()——统计某个目录的剩余空间 321
12.6.2 disk_total_space()——显示逻辑磁碟的容量 322
12.6.3 getcwd()/chdir()函式 322
12.6.4 opendir()与readdir()函式 322
12.6.5 实现iterator接口的目录读取 323
12.7 字元流 324
12.7.1 流与封装器的原理 325
12.7.2 PHP 5的预置流包装器 325
12.7.4 流与封装器的套用 326
12.7.5 Filter过滤器及其套用 328
12.7.6 流相关函式 330
12.7.7 创建自己的流过滤器 331
12.8 取得HTTPS加密内容 332
12.9 创建自己的流封装器 333
12.10 小结 334
第三篇 MySQL 5与PHP 5接口
第13章 WEB资料库设计 336
13.1 资料库和资料库系统的概念 336
13.2 资料库设计的步骤 337
13.3 表名与栏位名规则 338
13.4 小结 339
第14章 MYSQL 5资料库 340
14.1 MYSQL简介 340
14.2 MYSQL 5特性 341
14.2.1 MySQL 5优点 341
14.2.2 MySQL 5缺点 341
14.2.3 MySQL 5性能 341
14.3 MYSQL资料库存储类型 342
14.4 MYSQL栏位类型 343
14.5 MYSQL字元集与整理 344
14.5.1 MySQL 5字元集支持的原理 344
14.5.2 修改MySQL字元集方法 344
14.6 MYSQL 5套用与管理 345
14.6.1 登录到MySQL 345
14.6.2 修改root管理密码 346
14.6.3 创建资料库 346
14.6.4 改变资料库存储路径 346
14.6.5 MySQL许可权系统 347
14.6.6 phpMyAdmin管理工具 350
14.7 MYSQL管理工具 357
14.8 小结 357
第15章 MYSQL资料库 358
15.1 MYSQL操作与SQL 358
15.2 检索表中的数据 361
15.2.1 SELECT 语句 361
15.2.2 SELECT的聚集函式 362
15.2.3 结果集排序 362
15.2.4 函式 362
15.2.5 关联查询 362
15.3 高级SQL技术 364
15.3.1 主键 364
15.3.2 子查询 365
15.3.3 联合查询 365
15.4 MYSQL事务处理与触发器 365
15.4.1 存储进程 365
15.4.2 触发器(trigger) 366
15.4.3 视图 366
15.4.4 PHP与MySQL字元集 367
15.5 小结 368
第16章 PHP与MYSQL 369
16.1 PHP5与MYSQL连线的MYSQL扩展 369
16.2 资料库查询 370
16.3 其他显示记录集的函式 372
16.4 PHP 5与MYSQL的新接口MYSQLI 375
16.5 智慧型选择MYSQL扩展 384
16.6 小结 387
第17章 PHP资料库抽象层 388
17.1 什幺是资料库抽象层 388
17.2 常用的资料库抽象层 389
17.2.1 PEAR:DB 389
17.2.2 ADODB 390
17.2.3 Metabase 390
17.2.4 MDB 391
17.2.5 MDB2 391
17.2.6 Creole 392
17.2.7 PDO 392
17.2.8 PHPLib 392
17.3 PDO资料库抽象类 392
17.3.1 PDO简介 392
17.3.2 PDO的安装 393
17.3.3 PDO连线资料库 393
17.3.4 使用PDO查询 394
17.3.5 错误与异常处理 395
17.3.6 取得查询结果 397
17.4 ADODB 401
17.4.1 使用ADODB 401
17.4.2 ADODB安装 402
17.4.3 启动ADODB 402
17.4.4 ADODB的查询方法 403
17.4.5 移动记录集 403
17.4.6 使用ADODB生成HTML 404
17.4.7 使用ADODB进行分页 404
17.4.8 生成下拉选择选单 404
17.4.9 ADODB开发实例 404
17.5 PHPLIB 416
17.5.1 使用PHPLib查询 416
17.5.2 创建GetAll方法 418
17.6 小结 419
第四篇 PHP 5进阶与技巧
第18章 SMARTY与模板技术 421
18.1 MVC简介 421
18.2 模板系统 422
18.3 SMARTY概述 422
18.3.1 Smarty的优点 422
18.3.2 Smarty开发特性 423
18.4 安装SMARTY 423
18.5 SMARTY开发基础 425
18.5.1 第一个模板程式 425
18.5.2 编译后的模板 426
18.5.3 Smarty区块 427
18.5.4 Smarty注释 427
18.5.5 Smarty变数与变数格式化 427
18.6 SMARTY的控制结构 430
18.6.1 IF分支结构 430
18.6.2 循环结构 432
18.6.3 Smarty生成表单元素 440
18.6.4 Smarty档案包含 442
18.7 SMARTY快取 443
18.8 深入SMARTY开发 444
18.8.1 register_function 444
18.8.2 register_block 444
18.8.3 register_modifier 444
18.8.4 在模板内运行PHP代码 445
18.8.5 几个重要的模板修饰符 445
18.8.6 Smarty的保留变数 446
18.8.7 模板配置档案 447
18.8.8 Smarty工作檯 447
18.8.9 Smarty生成静态页面 448
18.8.10 製作线上日曆 448
18.8.11 Smarty与ADODB 449
18.9 小结 451
第19章 PHP和AJAX技术 452
19.1 AJAX简介 452
19.2 AJAX特性 453
19.3 XAJAX简介 453
19.4 XAJAX如何工作 453
19.5 异步更新内容 454
19.6 异步处理表单数据 456
19.7 增加自定义功能 457
19.8 解决乱码 457
19.9 SMARTY与XAJAX 457
19.10 小结 459
第20章 使用PHP编写SHELL 460
20.1 简介 460
20.2 PHP CLI SHELL脚本 460
20.2.1 CLI 与CGI的区别 460
20.2.2 CLI的配置参数 460
20.3 PHP命令行接口(CLI) 461
20.4 CLI命令选项 462
20.5 CLI开发 463
20.6 CLI实际套用 467
20.7 小结 470
第21章 PHP网路开发 471
21.1 SOCKET技术 471
21.1.1 Socket原理 471
21.1.2 建立一个连线 472
21.1.3 传送一个请求 472
21.1.4 查询Whois信息 473
21.1.5 创建自己的Socket伺服器 474
21.2 电子邮件 475
21.2.1 电子邮件简介 475
21.2.2 MTA和SMTP 475
21.2.3 PHP邮件配置 476
21.2.4 电子邮件头 477
21.2.5 MIME 477
21.3 使用MAIL()函式 479
21.4 使用SOCKET传送邮件 481
21.5 获取远程内容与自动化 482
21.5.1 使用CURL 482
21.5.2 使用Snoopy类 484
21.5.3 FTP操作 486
21.5.4 PHP与网路协定 488
21.6 小结 488
第22章 PHP档案上传 489
22.1 档案上传简介 489
22.2 处理上传档案 490
22.3 处理多档案上传 494
22.4 突破上传的记忆体限制 496
22.5 小结 496
第23章 图片与媒体处理 497
23.1 使用GD2扩展库 497
23.1.1 打开一张图片 498
23.1.2 打开任意格式的图片 498
23.1.3 显示和保存图片 499
23.1.4 图片转换 500
23.1.5 创建文字图片 501
23.1.6 绘制图形 502
23.1.7 创建验证码——CAPTCHA 503
23.1.8 缩略图片处理 504
23.1.9 创建水印图片 506
23.2 使用MING扩展创建FLASH 508
23.2.1 创建按钮 508
23.2.2 静态文字 509
23.2.3 动态文字 510
23.2.4 绘制图形 511
23.2.5 使用图片 512
23.3 使用IMAGEMAGICK 513
23.3.1 ImageMagick简介 513
23.3.2 安装ImageWand 514
23.3.3 读取图片内容 514
23.3.4 读取图片尺寸 515
23.3.5 图片裁切 515
23.3.6 生成图片缩略图 515
23.3.7 转换图片格式 516
23.3.8 控制图片旋转 516
23.3.9 重新缩放图片 517
23.3.10 加入渲染效果 517
23.3.11 压缩JPEG图片 518
23.4 小结 518
第24章 XML与RSS 519
24.1 XML 519
24.1.1 XML的结构与定义 519
24.1.2 XML与HTML 520
24.2 创建与解析XML文档 521
24.2.1 创建一个XML文档 522
24.2.2 使用SAX解析XML 523
24.2.3 DOM 525
24.2.4 SimpleXML 529
24.3 RSS聚合与解析技术 530
24.3.1 RSS简介 530
24.3.2 RSS 0.9 530
24.3.3 RSS3 1.0 531
24.3.4 RSS 2.0 532
24.3.5 Atom 534
24.4 XML READER 536
24.5 XML与SMARTY 537
24.6 小结 537
第25章 WEB服务与SOAP 538
25.1 WEB服务 538
25.1.1 Web服务概述 538
25.1.2 Web服务的特点 539
25.2 SOAP的讯息体 540
25.2.1 SOAP封套(SOAP Envelope) 540
25.2.2 SOAP头(SOAP Header) 540
25.2.3 SOAP错误信息(SOAP Fault) 540
25.2.4 讯息体(SOAP Body) 541
25.3 PHP中的SOAP配置 541
25.4 使用PHP开发SOAP套用 542
25.4.1 WSDL 542
25.4.2 建立SOAP伺服器端 545
25.4.3 建立SOAP客户端 546
25.5 小结 546
第26章 PHP与WAP技术 547
26.1 WAP技术简介 547
26.2 WAP配置 547
26.3 WAP页面 548
26.3.1 WAP页面简介 548
26.3.2 WAP页面跳转 548
26.3.3 使用WAP製作登录页面 550
26.4 SMARTY与WAP 554
26.5 小结 554
第五篇 PHP 5调试、升级与最佳化
第27章 错误与异常处理 556
27.1 概述 556
27.2 错误的类型 556
27.2.1 编程错误 556
27.2.2 未定义符号 557
27.2.3 轻量级错误 559
27.2.4 PHP产生的错误 560
27.2.5 错误与例外处理 562
27.3 小结 567
第28章 升级到PHP5 568
28.1 简介 568
28.2 对象的引用 568
28.3 构造对象 569
28.4 GET_CLASS()函式 569
28.5 IS_A()函式与INSTANCE OF 569
28.6 E_STRICT 570
28.6.1 自动建立对象 570
28.6.2 var与public 570
28.7 其他兼容性的问题 570
28.7.1 命令行接口 570
28.7.2 旧的超级全局数组的升级 570
28.7.3 函式修正与功能升级 571
28.8 小结 571
第29章 PHP最佳化技巧 572
29.1 PHP脚本级最佳化 572
29.1.1 require比require_once快 573
29.1.2 不做重複的车轮 573
29.2 使用代码最佳化工具 574
29.3 快取加速 575
29.3.1 使用eAccelerator 575
29.3.2 使用APC 577
29.4 HTTP加速 578
29.4.1 HTTP头信息 578
29.4.2 启用GZIP内容压缩 578
29.5 MYSQL性能最佳化 578
29.5.1 添加索引 578
29.5.2 MySQL快取与性能调优 579
29.6 MYSQL日誌维护 581
29.7 资料库外部最佳化 581
29.7.1 伺服器硬体最佳化 581
29.7.2 磁碟最佳化 582
29.7.3 作业系统最佳化 582
29.8 使用反向代理 582
29.9 APACHE伺服器最佳化 583
29.10 内容压缩与最佳化 583
29.11 分布与负载均衡 584
29.12 小结 586
第2部分 实战PHP5
第30章 实例开发:会员 589
30.1 概述 589
30.2 页面流程 589
30.2.1 用户注册流程 589
30.2.2 用户登录流程 590
30.3 资料库结构 590
30.4 UI与界面 593
30.5 目录结构与档案说明 595
第31章 实例开发: 603
31.1 目录结构与档案说明 603
31.2 页面流程 603
31.2.1 创建圈子 603
31.2.2 管理圈子 604
31.2.3 加入其他人创建的圈子 605
31.3 资料库结构 605
31.4 UI与界面 608
第32章 实例开发:爱问系统 610
32.1 概述 610
32.2 页面流程 610
32.3 目录结构与档案说明 612
32.4 UI与界面 613
32.5 资料库结构 617
第33章 实例开发:多用户 619
33.1 概述 619
33.2 目录结构与档案说明 619
33.3 页面流程 620
33.4 UI与界面 620
33.5 资料库结构 621
33.6 小结 623
附录A PHP线上资源 592
附录B Zend Core安装 593
附录C PHP扩展开发 599
附录D MySQL字元集与整理 601
附录E 代码页与Charset对照表 605
附录F php.ini配置详解 606
附录G HTTP返回代码表(RFC2068) 626