第1章 迈向PHP的第一步——PHP概述 3
1.1 一起来认识PHP 3
1.1.1 PHP语言的发展史 3
1.1.2 为什么选择PHP 3
1.1.3 PHP的工作原理 4
1.2 PHP所需的Web服务器 5
1.2.1 Apache服务器 5
1.2.2 Microsoft IIS服务器 5
1.2.3 其他Web服务器 6
1.3 Win32平台下PHP运行环境的搭建 6
1.3.1 安装Apache 2 6
1.3.2 安装PHP 5 8
1.3.3 整合PHP和Apache 9
1.4 Linux平台下PHP运行环境的搭建 10
1.4.1 安装libxml 2 10
1.4.2 安装Apache 2 11
1.4.3 安装PHP 5 12
1.4.4 整合PHP和Apache 12
1.5 常用开发工具 13
1.5.1 Zend Studio 13
1.5.2 Komodo 13
1.5.3 其他常用开发工具 14
1.6 本章小结 15
第2章 打下坚实的基础——基本语法 17
2.1 从“Hello World”开始 17
2.1.1 PHP的语言概貌 18
2.1.2 为我们的程序添加注释 19
2.2 掌握PHP的数据类型 21
2.2.1 基本数据类型 21
2.2.2 复合数据类型 22
2.2.3 特殊数据类型 24
2.3 探讨数据类型之间的转换 25
2.3.1 PHP与众不同的类型转换 25
2.3.2 自动类型转换 26
2.3.3 强制类型转换 27
2.4 PHP中的变量和常量 33
2.4.1 什么是变量和常量 34
2.4.2 变量的定义与赋值 34
2.4.3 变量作用域 36
2.4.4 静态变量 37
2.4.5 可变变量 38
2.4.6 默认系统变量 39
2.4.7 常量的定义 39
2.4.8 默认系统常量 40
2.5 控制运算——表达式和运算符 41
2.5.1 算术运算符 41
2.5.2 赋值运算符 42
2.5.3 位运算符 43
2.5.4 比较运算符 44
2.5.5 逻辑运算符 45
2.5.6 字符串运算符 46
2.5.7 数组运算符 46
2.5.8 类型运算符 47
2.5.9 错误抑制运算符 48
2.5.10 执行运算符 48
2.5.11 判断运算符 49
2.5.12 运算符的优先级 49
2.6 何去何从——流程控制语句 50
2.6.1 if/else/elseif选择语句 51
2.6.2 switch选择语句 52
2.6.3 while/do…while循环语句 54
2.6.4 for循环语句 55
2.6.5 foreach循环语句 56
2.6.6 break跳转语句 57
2.6.7 continue跳转语句 57
2.7 本章小结 58
第3章 开发变得更加简单——使用函数 59
3.1 定义并使用函数 59
3.1.1 定义函数 59
3.1.2 函数的调用方法 60
3.2 函数的返回值 61
3.2.1 单一返回值 61
3.2.2 多返回值 62
3.3 函数的重要元素——参数 62
3.3.1 参数的声明方式 62
3.3.2 参数的默认值 63
3.3.3 参数的两种传递方式——值传递和引用传递 64
3.4 在哪里起作用——函数的作用域 65
3.5 变量函数 66
3.6 PHP内置函数 67
3.6.1 工具函数 67
3.6.2 数学函数 71
3.6.3 日期函数 73
3.6.4 文件包含函数 77
3.7 本章小结 79
第4章 比一般变量强大——使用数组 81
4.1 认清数组的真面目 81
4.1.1 什么是数组 81
4.1.2 数组的两种类型——索引数组和关联数组 81
4.2 数组也有不同 82
4.2.1 一维数组 83
4.2.2 二维数组 83
4.2.3 多维数组 84
4.3 让数组为我们服务 84
4.3.1 创建一个数组 85
4.3.2 添加数组元素 85
4.3.3 更新数组元素 86
4.3.4 删除数组元素 86
4.3.5 遍历数组元素 86
4.4 我们可以更“懒”一些——使用数组函数 88
4.4.1 用于实现排序的函数 88
4.4.2 用于实现随机排序的函数 90
4.4.3 数组判断函数 91
4.4.4 数组的合并与拆分 94
4.4.5 其他常用数组函数 96
4.5 数组的应用实例 99
4.5.1 顺序查找 99
4.5.2 二分查找 100
4.6 本章小结 101
第5章 玩转字符串 103
5.1 初识字符串 103
5.2 定义字符串 103
5.2.1 使用单引号 103
5.2.2 使用双引号 104
5.2.3 使用定界符 105
5.3 获取字符串 106
5.4 拼接字符串 107
5.4.1 字符串拼接 107
5.4.2 字符串换行拼接 108
5.5 字符串的显示与格式化 108
5.5.1 字符串的显示 108
5.5.2 字符串的格式化 109
5.6 计算字符串的长度与数目 112
5.6.1 计算字符串的长度 112
5.6.2 计算字符串的数目 113
5.7 字符串的查找与处理 114
5.7.1 字符串的查找 114
5.7.2 字符串的处理 116
5.8 切分与合并字符串 119
5.8.1 切分字符串 119
5.8.2 合并字符串 120
5.9 字符串的比较 121
5.10 本章小结 123
第6章 正则表达式的奥秘 125
6.1 正则表达式简介 125
6.1.1 什么是正则表达式 125
6.1.2 正则表达式的作用 125
6.2 正则表达式基础 126
6.2.1 元字符 126
6.2.2 方括号表达式 126
6.2.3 定位符 127
6.2.4 量词 127
6.2.5 选择符 128
6.3 POSIX正则表达式 128
6.3.1 POSIX字符簇 128
6.3.2 POSIX正则表达式函数 128
6.4 Perl正则表达式 132
6.4.1 Perl修饰符 132
6.4.2 Perl字符簇 133
6.4.3 Perl正则表达式函数 133
6.5 正则表达式的深入分析 137
6.6 本章小结 138
第7章 揭开面向对象的神秘面纱 139
7.1 编程方式的发展之路 139
7.1.1 面向过程编程方式 139
7.1.2 面向对象编程方式 139
7.1.3 PHP中编程方式的演变 140
7.2 一切都是对象——类和对象 140
7.2.1 类 140
7.2.2 对象 141
7.2.3 类成员 141
7.2.4 $this关键字 143
7.2.5 构造方法 144
7.2.6 析构方法 145
7.2.7 静态类成员 146
7.2.8 类常量 148
7.3 对象也能被“克隆” 149
7.3.1 通过clone克隆一个对象 149
7.3.2 __clone()方法 150
7.4 提高开发效率——继承 150
7.4.1 如何继承一个类 150
7.4.2 使用parent∷关键字 152
7.4.3 使用instanceof运算符 152
7.4.4 覆盖父类方法 154
7.4.5 构造方法在继承中的应用 155
7.5 抽象类和接口 156
7.5.1 定义抽象类 156
7.5.2 抽象类的实现过程 156
7.5.3 定义接口 157
7.5.4 接口的实现过程 158
7.5.5 抽象类与接口的区别 159
7.6 多态 159
7.6.1 通过继承实现多态 159
7.6.2 通过接口实现多态 160
7.7 PHP 5中的反射 162
7.7.1 ReflectionClass 162
7.7.2 ReflectionMethod 163
7.7.3 ReflectionParameter 164
7.7.4 ReflectionProperty 164
7.8 PHP 5中的特殊方法 165
7.8.1 __toString() 165
7.8.2 __autoload() 165
7.8.3 __get()和__set() 166
7.8.4 __call() 167
7.9 PHP 5所不支持的OOP特性 168
7.10 本章小结 168
第8章 应对特殊情况——错误和异常处理 169
8.1 为什么需要对错误和异常进行处理 169
8.2 可能会遇到的基本错误类型 169
8.2.1 语法错误 169
8.2.2 逻辑错误 171
8.2.3 定义错误 171
8.2.4 环境错误 173
8.2.5 运行错误 174
8.3 PHP的错误处理机制 174
8.3.1 错误级别 174
8.3.2 错误报告 175
8.4 我们应该怎么做——错误处理方式 177
8.4.1 错误处理函数 177
8.4.2 自定义错误页面 178
8.5 异常并不可怕——异常处理 179
8.5.1 抛出和捕获异常 179
8.5.2 PHP的基本异常类 180
8.5.3 扩展基本异常类 181
8.5.4 捕获多个异常 182
8.6 本章小结 183
第9章 PHP程序调试 185
9.1 我们需要程序调试 185
9.2 使用Xdebug进行调试 185
9.2.1 Xdebug的安装 185
9.2.2 Xdebug的使用 187
9.2.3 优化程序 188
9.3 使用Log4P进行调试 189
9.4 使用Xdebug和Komodo进行服务器端调试 191
9.5 本章小结 192
第10章 寻根溯源——设计模式 193
10.1 了解设计模式 193
10.2 简单工厂模式 193
10.3 单元素模式 195
10.4 观察者模式 196
10.5 命令模式 197
10.6 策略模式 199
10.7 MVC模式 200
10.8 本章小结 201
第2篇 Web核心应用篇 205
第11章 Web 2.0介绍 205
11.1 Web发展新纪元——Web 2.0时代 205
11.1.1 Web 2.0简介 205
11.1.2 Web 2.0核心思想 205
11.2 Web 2.0的新特性 206
11.3 Web 2.0中的Ajax 207
11.4 Web 2.0中的Div+CSS布局 208
11.4.1 CSS发展史 208
11.4.2 Div+CSS布局的优势 209
11.4.3 现在Div+CSS布局的不足 209
11.5 本章小结 209
第12章 PHP在门户网站中的应用 211
12.1 门户网站的设计方案 211
12.1.1 各类门户网站的特点 211
12.1.2 门户网站的设计思路 212
12.2 门户网站技术难点 213
12.2.1 交互设计 213
12.2.2 访问量设计 214
12.2.3 负载均衡设计 215
12.3 项目实战——使用PHP缓存动态数据 217
12.4 本章小结 219
第13章 页面的重要组成——表单 221
13.1 初步认识表单 221
13.1.1 创建表单 221
13.1.2 常用表单元素介绍 222
13.1.3 提交表单数据的方法——GET和POST 227
13.2 对表单数据进行验证 228
13.2.1 识别表单动作 228
13.2.2 客户端验证表单数据 229
13.2.3 服务器端验证表单数据 230
13.2.4 结合正则表达式验证表单数据 231
13.3 表单的安全性分析 233
13.3.1 检测表单路径 233
13.3.2 过期表单的处理 234
13.3.3 过滤表单数据 234
13.3.4 使用ctype验证表单数据 237
13.3.5 拒绝攻击的方法magic_quotes_gpc 238
13.3.6 全局变量的安全性分析 239
13.4 本章小结 240
第14章 神奇的脚本语言——JavaScript 241
14.1 JavaScript简介 241
14.2 JavaScript基础应用 242
14.2.1 语法、变量与关键字 242
14.2.2 流程控制语句 243
14.2.3 函数 247
14.2.4 事件处理函数应用 249
14.3 JavaScript中的面向对象 250
14.3.1 将页面元素视为对象 250
14.3.2 取得页面中元素的值 250
14.3.3 神奇的this 251
14.3.4 页面中元素对象的方法 252
14.4 在HTML页面中使用JavaScript 255
14.4.1 引用当前页面的JavaScript 256
14.4.2 引用外部文件中的JavaScript 256
14.4.3 两种引用JavaScript方法之间的取舍 256
14.5 JavaScript实用 257
14.5.1 页面设计 258
14.5.2 JavaScript设计 258
14.5.3 页面与JavaScript之间的调用 259
14.5.4 重难点分析 259
14.6 PHP与JavaScript的整合开发 259
14.6.1 在PHP中使用JavaScript 259
14.6.2 在JavaScript中使用PHP 260
14.7 本章小结 261
第15章 PHP与Ajax 263
15.1 提升用户体验——使用Ajax技术 263
15.1.1 Ajax的概念 263
15.1.2 Ajax的优点 263
15.2 Ajax的核心技术 264
15.2.1 JavaScript 264
15.2.2 XMLHttpRequest 264
15.2.3 XML 264
15.2.4 DOM 265
15.3 体验Ajax 265
15.3.1 初始化XMLHttpRequest 265
15.3.2 页面设计 266
15.3.3 处理异步请求的JavaScript 266
15.3.4 请求页面hello.php 267
15.4 Xajax 268
15.4.1 Xajax的工作原理 268
15.4.2 安装Xajax 268
15.4.3 在脚本中调用Xajax 269
15.4.4 Xajax的HelloWorld 271
15.5 项目实战——使用Ajax进行动态分页 272
15.5.1 设计数据库 273
15.5.2 设计页面JavaScript 273
15.5.3 设计分页页面 274
15.5.4 重点、难点分析 276
15.6 项目实战——使用Xajax进行登录验证 276
15.6.1 引入Xajax运行库 277
15.6.2 页面显示部分 278
15.6.3 页面JavaScript部分 278
15.6.4 Xajax部分 278
15.6.5 用于完成Xajax登录校验的页面 280
15.7 本章小结 280
第16章 连接客户端与服务器的纽带——会话 281
16.1 会话管理的解决方案——Session与Cookie 281
16.2 方案——使用Session 281
16.2.1 Session简介 282
16.2.2 Session的创建与销毁 282
16.2.3 Session的配置与应用 283
16.2.4 Session中的存取对象与应用数组 286
16.2.5 Session的共享与安全 288
16.2.6 提高Session的效率 292
16.3 方案二——使用Cookie 292
16.3.1 Cookie简介 293
16.3.2 Cookie的工作原理 293
16.3.3 创建与删除Cookie 294
16.3.4 解决Cookie中常见的问题 296
16.4 项目实战——购物车系统 297
16.5 本章小结 299
第17章 轻松实现文件操作 301
17.1 查看文件和目录 301
17.1.1 查看文件名称 301
17.1.2 查看目录名称 301
17.1.3 查看文件真实目录 302
17.2 文件信息不再神秘 302
17.2.1 显示文件类型 302
17.2.2 计算文件大小 303
17.2.3 文件的访问时间和修改时间 303
17.2.4 显示磁盘大小 304
17.2.5 获取文件权限 304
17.3 开始实现各种目录操作 304
17.3.1 创建目录 304
17.3.2 打开目录 305
17.3.3 关闭目录 305
17.3.4 读取目录 306
17.3.5 删除目录 306
17.4 开始实现各种文件操作 306
17.4.1 打开文件 307
17.4.2 关闭文件 308
17.4.3 写入文件 308
17.4.4 读取文件 309
17.4.5 删除文件 311
17.4.6 复制文件 311
17.4.7 重命名文件 311
17.5 实现数据交互——字符流 312
17.5.1 关于流 312
17.5.2 PHP预置流封装器 312
17.5.3 PHP预置流过滤器 313
17.5.4 流函数 315
17.5.5 用流获取HTTPS加密内容 316
17.6 项目实战——自定义错误日志 316
17.7 本章小结 317
第18章 国际化和本地化 319
18.1 了解国际化和本地化 319
18.2 字符集及常用的编码格式 319
18.2.1 ASCII字符集 319
18.2.2 Unicode字符集 320
18.2.3 ISO-8859字符集 320
18.2.4 GB2312与GBK字符集 320
18.3 PHP对国际化的支持 321
18.4 PHP中的本地化函数 322
18.5 本章小结 324
第19章 图片与媒体处理 325
19.1 PHP能够处理的图像类型 325
19.1.1 JPEG格式 325
19.1.2 GIF格式 325
19.1.3 PNG格式 325
19.2 使用GD2库函数 326
19.2.1 创建背景图像 326
19.2.2 绘制图像 327
19.2.3 显示或保存图像 328
19.2.4 转换图像类型 328
19.2.5 图形验证码 329
19.2.6 生成缩略图 331
19.2.7 图片反色处理 332
19.3 用Ming库创建Flash动画 333
19.3.1 动画构成要素 333
19.3.2 定义符号 333
19.3.3 创建动画 334
19.3.4 设置脚本 335
19.3.5 动画的生成和输出 335
19.3.6 动态文本效果 336
19.3.7 动态图像效果 337
19.3.8 视听双重冲击 339
19.3.9 动画中添加按钮 341
19.4 本章小结 343
第20章 全面开发提速——使用Smarty模板技术 345
20.1 认识模板引擎 345
20.2 使用Smarty前的准备工作 346
20.2.1 认识Smarty 346
20.2.2 下载和安装Smarty 346
20.2.3 配置Smarty 347
20.3 S marty入门 347
20.3.1 开始使用Smarty模板 347
20.3.2 Smarty模板的工作原理 349
20.4 Smarty基础 349
20.4.1 注释 349
20.4.2 普通变量及保留变量 350
20.4.3 if条件控制 351
20.4.4 foreach循环 352
20.4.5 section循环 353
20.4.6 包含文件 354
20.4.7 模板修饰符 356
20.5 Smarty深入 360
20.5.1 Smarty缓存 360
20.5.2 Smarty配置文件 361
20.5.3 Smarty调试 362
20.6 项目实战——查看帖子功能模块 363
20.7 本章小结 367
第21章 丰富我们的应用——使用XML与RSS 369
21.1 强大的标记语言——XML 369
21.1.1 XML的特点 369
21.1.2 XML文档结构 370
21.1.3 使用PHP创建XML文档 370
21.2 如何解析XML文档 371
21.2.1 使用SAX解析XML 371
21.2.2 使用DOM创建和解析XML 373
21.2.3 使用SimpleXML解析XML 376
21.2.4 使用XMLReader解析XML 377
21.3 RSS——简单而实用的XML文档 378
21.3.1 为什么使用RSS 379
21.3.2 RSS 2.0 的标准 379
21.4 本章小结 381
第3篇 数据库实战篇 385
第22章 MySQL数据库基础 385
22.1 关系型数据库和关系型数据库系统 385
22.1.1 关系型数据库的概念 385
22.1.2 关系型数据库系统的体系结构 386
22.2 MySQL5概述 386
22.3 准备工作——安装MySQL5 387
22.3.1 下载MySQL5 387
22.3.2 安装MySQL5 388
22.3.3 配置MySQL5 389
22.3.4 测试MySQL5 392
22.4 数据库和表操作 392
22.4.1 创建数据库 392
22.4.2 删除数据库 393
22.4.3 创建表 394
22.4.4 删除表 396
22.4.5 复制表 396
22.4.6 修改表 397
22.5 数据操作 399
22.5.1 插入数据 399
22.5.2 查询数据 401
22.5.3 更新数据 403
22.5.4 删除数据 403
22.6 级SQL应用 404
22.6.1 连接 404
22.6.2 子查询 406
22.6.3 事务处理 408
22.7 管理MySQL 409
22.7.1 数据备份 409
22.7.2 用户权限与访问控制 410
22.7.3 性能优化 412
22.7.4 服务器管理 413
22.8 本章小结 414
第23章 PHP 5与MySQL的结合应用 415
23.1 PHP 5的mysql扩展 415
23.1.1 启用mysql扩展 415
23.1.2 使用phpMyAdmin导入数据 415
23.2 PHP 5中MySQL的应用 417
23.2.1 连接与断开服务器 417
23.2.2 选择数据库 418
23.2.3 执行查询 419
23.2.4 获取查询结果 419
23.2.5 分页处理 420
23.2.6 保存数据 421
23.2.7 修改数据 422
23.2.8 删除数据 422
23.3 在PHP程序中获得MySQL数据库信息 423
23.3.1 获得所有的数据库 423
23.3.2 获得数据库内的表 423
23.3.3 获取字段的相关信息 424
23.3.4 获取错误信息 427
23.4 PHP 5的其他数据库相关函数 428
23.4.1 mysql_client_encoding()函数 428
23.4.2 mysql_real_escape_string()函数 428
23.4.3 mysql_start()函数 429
23.4.4 mysql_thread_id()函数 430
23.4.5 mysql_list_processes()函数 430
23.4.6 mysql_get_server_info()函数 431
23.4.7 mysql_get_host_info()函数 431
23.4.8 mysql_get client_info()函数 432
23.5 PHP 5的mysqli扩展 432
23.5.1 mysqli简介 432
23.5.2 连接与断开服务器 433
23.5.3 使用mysqli存取数据 434
23.5.4 预准备语句 436
23.5.5 多个查询 437
23.6 项目实战——用户登录程序 438
23.7 本章小结 446
第24章 更深入的了解——PHP持久层类库 447
24.1 SQLite 447
24.1.1 下载安装SQLite 447
24.1.2 SQLite的常用命令 448
24.1.3 PHP的SQLite 库 450
24.2 PDO介绍 452
24.2.1 数据库抽象层简介 453
24.2.2 安装PDO 453
24.2.3 连接数据库 454
24.2.4 使用PDO执行查询 454
24.2.5 获取结果 455
24.2.6 PDO对错误的处理方式 457
24.2.7 PDO的事务 458
24.3 ADODB介绍 459
24.3.1 载并安装ADODB 459
24.3.2 连接数据库 460
24.3.3 ADODB执行查询 461
24.3.4 获取结果 461
24.3.5 ADODB的一些其他功能 464
24.4 项目实战——商品后台管理程序 466
24.5 本章小结 470
第25章 拾遗补缺——存储过程、触发器、游标、视图 471
25.1 存储过程 471
25.1.1 存储过程简介 471
25.1.2 创建存储过程 472
25.1.3 执行存储过程 473
25.1.4 创建复杂的存储过程 473
25.1.5 查看存储过程的的相关信息 477
25.1.6 修改存储过程 478
25.1.7 删除存储过程 479
25.2 触发器 479
25.2.1 触发器介绍 479
25.2.2 创建触发器 479
25.2.3 查看触发器 480
25.2.4 删除触发器 481
25.3 游标 481
25.3.1 声明游标 481
25.3.2 打开游标 482
25.3.3 使用游标 482
25.3.4 关闭游标 483
25.4 视图 483
25.4.1 创建视图 484
25.4.2 修改视图 484
25.4.3 删除视图 485
25.4.4 查看创建视图的语法 485
25.5 本章小结 486
第26章 面向网络的PHP开发 489
26.1 PHP网络编程入门 489
26.1.1 计算机网络的概念 489
26.1.2 TCP/IP协议和参考模型 489
26.2 什么是DNS和服务 491
26.2.1 DNS简介 491
26.2.2 获取服务 492
26.3 利用Socket技术完成“C/S”通信 493
26.3.1 Socket原理 493
26.3.2 演示Socket功能 494
26.3.3 创建定制Socket服务器 495
26.3.4 Socket建立客户端 496
26.4 PHP中使用FTP操作 497
26.4.1 登录FTP服务器 497
26.4.2 获取FTP服务器文件列表 498
26.4.3 实现对FTP服务器上的文件操作 499
26.5 PHP中使用电子邮件 500
26.5.1 PHP中电子邮件的配置 500
26.5.2 mail()函数 501
26.5.3 各种电子邮件发送方式 501
26.6 本章小结 504
第27章 分享你的资源——文件上传 505
27.1 文件上传概述 505
27.1.1 文件上传种类 505
27.1.2 表单的enctype属性 505
27.2 在PHP中实现文件上传 506
27.2.1 全局变量$_FILES 506
27.2.2 单一文件上传 506
27.2.3 多文件上传 507
27.3 优化PHP实现的文件上传 508
27.4 本章小结 509
第28章 PHP与XML-RPC、SOAP、Web Service 511
28.1 PHP中使用XML-RPC 511
28.1.1 XML-RPC协议简介 511
28.1.2 XML-RPC的安装与扩展 511
28.1.3 XML-RPC的工作原理 512
28.1.4 PHP与XML-RPC的结合使用 514
28.2 PHP中使用SOAP 518
28.2.1 SOAP协议简介 518
28.2.2 SOAP的特点 518
28.2.3 SOAP的工作原理 519
28.2.4 SOAP的安装与扩展 521
28.2.5 PHP与SOAP的结合使用 521
28.3 Web服务简介 525
28.3.1 什么是Web Service 525
28.3.2 Web Service工作原理 525
28.3.3 Web Service特点 526
28.3.4 Web描述语言WSDL 527
28.3.5 Web服务标准UDDI 527
28.3.6 创建PHP的Web服务 528
28.4 本章小结 532
第29章 创建统计图的利器——JpGraph 533
29.1 JpGraph概述 533
29.1.1 JpGraph工作原理 533
29.1.2 下载并安装JpGraph 533
29.1.3 JpGraph的配置 534
29.2 使用JpGraph创建统计图 534
29.2.1 创建X-Y坐标图 534
29.2.2 创建X-Y-Y坐标图 537
29.2.3 创建柱形图 539
29.2.4 创建饼图 540
29.2.5 创建3D饼图 541
29.3 中文显示解决方案 542
29.4 项目实战——学生人数统计图 544
29.4.1 起止年份及统计图类型选择页面 545
29.4.2 统计图显示页面 547
29.5 本章小结 548
第30章 FPDF类库的应用 549
30.1 概述FPDF的功能 549
30.2 下载并安装FPDF 549
30.3 FPDF基本方法 550
30.4 使用FPDF 551
30.4.1 添加文档信息 551
30.4.2 添加页眉与页脚 552
30.4.3 添加表格 553
30.4.4 插入图片 555
30.5 FPDF扩展 556
30.6 项目实战——财务报表 557
30.6.1 需求分析 558
30.6.2 项目演示 558
30.6.3 数据库设计 559
30.6.4 编写项目 559
30.7 本章小结 560
第31章 PHP中的无线应用——Wap 561
31.1 初识Wap 561
31.1.1 什么是Wap 561
31.1.2 第一个Wap页面 561
31.2 在PHP中使用Wap 563
31.2.1 配置Apache服务器 563
31.2.2 在PHP中输出Wap页面 563
31.2.3 PHP与Wap的进一步结合 564
31.3 在Wap中使用Smarty 566
31.4 本章小结 567
第5篇 Zend实战篇 571
第32章 Zend Studio工具 571
32.1 Zend Studio简介 571
32.1.1 Zend Studio下载与安装 571
32.1.2 Zend Studio组件简介 574
32.1.3 Zend Studio工作流程 575
32.1.4 Zend Studio的特点 575
32.2 Zend Studio用户界面 576
32.2.1 Zend Studio的布局 576
32.2.2 工具栏和各种窗口介绍 577
32.2.3 Zend Studio快捷键 580
32.2.4 项目管理 581
32.2.5 首选项参数设置 582
32.2.6 使用ZDE创建一个应用工程 588
32.3 编辑功能 590
32.3.1 代码补全功能 590
32.3.2 使用模板功能 591
32.3.3 代码片段功能 592
32.4 代码调试与分析 592
32.4.1 内部调试 593
32.4.2 远程服务器调试 595
32.4.3 监控程序状态 600
32.4.4 代码分析 601
32.5 本章小结 602
第33章 Zend Optimizer优化器 603
33.1 Zend优化器简介 603
33.1.1 Zend优化器的作用 603
33.1.2 Zend优化器的特点 603
33.1.3 Zend优化器系统需求 603
33.2 安装Zend Optimizer优化器 604
33.2.1 下载安装Zend Optimizer优化器 604
33.2.2 安装Zend Optimizer优化器 604
33.3 Zend Optimizer的配置与使用 608
33.4 本章小结 609
第34章 Zend Platform 611
34.1 Zend Platform概述 611
34.1.1 Zend Platform的特点及应用价值 611
34.1.2 Zend Platform的下载及安装 612
34.1.3 Zend Platform的功能简介 615
34.2 本章小结 616
第35章 Zend Guard安全卫士 617
35.1 Zend Guard简介 617
35.1.1 Zend Guard工作原理 617
35.1.2 ZendGuard的特点 618
35.2 Zend Guard的使用 618
35.2.1 下载安装Zend Guard 619
35.2.2 Zend Guard工作界面 621
35.2.3 创建Zend Guard项目 622
35.2.4 创建Zend Guard授权文件 626
35.3 本章小结 628
第36章 ZendFramework框架 629
36.1 ZendFramework简介 629
36.2 ZendFramework工作原理 629
36.3 使用ZendFramework 630
36.3.1 下载与安装ZendFramework 630
36.3.2 ZendFramework的目录结构 632
36.3.3 ZendFramework命名规则 632
36.3.4 配置ZendFramework 632
36.4 项目实战——书籍管理系统 634
36.4.1 需求分析 634
36.4.2 数据库设计 634
36.4.3 创建项目 635
36.4.4 配置数据库连接 636
36.4.5 设计模型层 636
36.4.6 ZendFramework分页设计 636
36.4.7 管理员登录模块设计 638
36.4.8 书籍管理模块设计 639
36.5 本章小结 642
第6篇 安全及优化篇 645
第37章 提高安全系数——PHP加密和解密 645
37.1 加密和解密介绍 645
37.2 MD5算法 645
37.2.1 算法分析 645
37.2.2 算法应用 647
37.3 SHA1算法 647
37.3.1 算法分析 647
37.3.2 算法应用 647
37.4 mcrypt扩展库与DES算法 648
37.4.1 mcrypt扩展库 648
37.4.2 DES算法 648
37.5 项目实战——加密信息发布系统 651
37.5.1 系统功能演示 651
37.5.2 数据库设计 652
37.5.3 注册页面设计 652
37.5.4 登录页面设计 654
37.5.5 用户区页面设计 655
37.5.6 用户登出页面设计 656
37.6 本章小结 657
第38章 常见的程序漏洞和防范措施 659
38.1 漏洞的产生及其危害 659
38.2 各种漏洞的产生与防范 659
38.2.1 本地文件包含漏洞 659
38.2.2 远程文本包含漏洞 660
38.2.3 脚本命令执行漏洞 661
38.2.4 文件上传漏洞 661
38.2.5 提交表单漏洞 662
38.2.6 SQL注入漏洞 663
38.3 本章小结 663
第39章 日志记录的分析 665
39.1 配置Apache服务器 665
39.1.1 访问日志配置 665
39.1.2 错误日志配置 666
39.2 Apache服务器的日志种类介绍 667
39.2.1 访问日志 667
39.2.2 错误日志 667
39.3 日志的分析 668
39.3.1 使用AWStats工具分析日志 668
39.3.2 使用Webalizer工具分析日志 672
39.3.3 通过PHP查看分析日志 675
39.4 本章小结 676
第7篇 开源框架实战篇 679
第40章 CakePHP框架 679
40.1 CakePHP框架简介 679
40.1.1 CakePHP的特点 679
40.1.2 CakePHP框架工作原理 680
40.2 下载及安装CakePHP框架 681
40.3 CakePHP框架应用基础 684
40.3.1 CakePHP框架目录结构 685
40.3.2 CakePHP框架的命名规则 685
40.3.3 CakePHP框架的配置 687
40.4 深入CakePHP——MVC架构 688
40.4.1 CakePHP框架的Model 688
40.4.2 CakePHP框架的Controller 693
40.4.3 CakePHP框架的View 695
40.4.4 CakePHP框架的Helper 695
40.5 项目实战——网上投票系统 697
40.5.1 需求分析 697
40.5.2 项目演示 698
40.5.3 数据库设计 701
40.5.4 创建项目 703
40.5.5 连接数据库 703
40.5.6 模型层设计 703
40.5.7 控制层设计 705
40.5.8 视图层设计 710
40.6 本章小结 717
第41章 FleaPHP框架 719
41.1 FleaPHP简介 719
41.1.1 FleaPHP的主要特点 719
41.1.2 FleaPHP的工作原理 720
41.1.3 下载与安装FleaPHP 721
41.2 如何使用FleaPHP 722
41.2.1 FleaPHP命名规则 722
41.2.2 配置FleaPHP 723
41.3 项目实战——网络留言板 725
41.3.1 需求分析 725
41.3.2 功能演示 725
41.3.3 数据库设计 727
41.3.4 创建项目 728
41.3.5 配置数据库连接 729
41.3.6 设计模型层 729
41.3.7 设计控制层 730
41.3.8 设计视图层 733
41.4 本章小结 736
第42章 MooPHP框架 737
42.1 MooPHP框架简介 737
42.1.1 MooPHP框架特点 737
42.1.2 MooPHP框架工作原理 738
42.1.3 MooPHP的下载与安装 738
42.2 使用MooPHP框架 739
42.2.1 MooPHP的配置 739
42.2.2 MooPHP的命名规则 741
42.2.3 MooPHP的模板标签 741
42.2.4 MooPHP的数据库类 742
42.2.5 MooPHP的后台使用 742
42.3 项目实战——博客系统 747
42.3.1 需求分析 747
42.3.2 项目演示 748
42.3.3 数据库设计 750
42.3.4 创建项目 751
42.3.5 本地配置 752
42.3.6 系统前台设计 752
42.3.7 系统后台设计 754
42.4 本章小结 760
第43章 应用CakePHP框架开发新闻发布系统 761
43.1 案例开发实质 761
43.2 需求分析 761
43.3 系统功能设计 762
43.3.1 开发环境 762
43.3.2 系统功能结构 763
43.3.3 文件夹的组织结构 763
43.3.4 数据库设计 764
43.4 公共模块设计 766
43.4.1 database.php文件配置 766
43.4.2 core.php文件的配置 766
43.4.3 routes.php文件的配置 767
43.4.4 controller.php文件的配置 767
43.4.5 CakePHP分页设计 767
43.5 系统首页设计 769
43.5.1 前台首页设计 769
43.5.2 后台首页设计 772
43.6 用户管理功能模块 775
43.6.1 User模型层设计 775
43.6.2 CakePHP用户登录验证 775
43.6.3 应用CakePHP检查用户身份 777
43.6.4 查看用户的实现过程 777
43.6.5 添加用户的实现过程 778
43.6.6 删除用户的实现过程 780
43.6.7 用户退出的实现过程 780
43.7 新闻管理功能模块 780
43.7.1 News模型层设计 780
43.7.2 新闻搜索的实现过程 781
43.7.3 查看新闻的实现过程 783
43.7.4 添加新闻的实现过程 783
43.7.5 修改新闻的实现过程 785
43.7.6 删除新闻的实现过程 786
43.3.8 类别信息管理功能模块 786
43.8.1 Type模型层设计 786
43.8.2 查看类别的实现过程 787
43.8.3 修改类别方法的实现过程 787
43.9 开发技巧 788
43.9.1 404错误的处理 788
43.9.2 动态时钟显示 789
43.10 本章小结 790
第44章 应用FleaPHP开发论坛社区系统 791
44.1 案例开发实质 791
44.2 需求分析 791
44.3 系统功能设计 792
44.3.1 系统功能结构 792
44.3.2 系统流程图 792
44.3.3 开发环境 793
44.3.4 文件夹的组织结构 793
44.3.5 数据表设计 794
44.4 DSN.php文件配置 796
44.5 论坛社区的首页设计 797
44.5.1 首页概述 797
44.5.2 首页技术分析 798
44.5.3 首页的实现过程 799
44.6 分页功能的实现 800
44.7 用户管理功能模块 803
44.7.1 UserDaoImpl模型层设计 803
44.7.2 用户注册的实现过程 804
44.7.3 FleaPHP验证码的应用 805
44.7.4 使用session判断用户权限 807
44.7.5 用户列表的实现过程 808
44.7.6 删除用户的实现过程 809
44.7.7 用户注销的实现过程 810
44.8 类别管理功能模块 810
44.8.1 TypeDaoImpl模型层设计 810
44.8.2 类别列表的实现过程 811
44.8.3 添加类别的实现过程 812
44.8.4 删除类别的实现过程 813
44.9 帖子管理功能模块 813
44.9.1 TopicDaoImpl模型层设计 813
44.9.2 发表帖子的实现过程 815
44.9.3 修改帖子的实现过程 816
44.9.4 删除帖子的实现过程 817
44.10 回帖信息管理功能模块 817
44.10.1 ReplyDaoImpl模型层设计 817
44.10.2 发表回帖的实现过程 818
44.10.3 修改回帖的实现过程 820
44.10.4 删除回帖的实现过程 821
44.11 开发技巧 821
44.11.1 刷新frameset窗口 821
44.11.2 记录帖子人气 822
44.12 本章小结 822
第45章 应用MooPHP开发博客系统 823
45.1 案例开发实质 823
45.2 需求分析 823
45.3 系统功能设计 824
45.3.1 系统功能结构 824
45.3.2 系统流程图 824
45.3.3 开发环境 825
45.3.4 文件夹结构 825
45.3.5 数据表设计 825
45.4 MooConfig.php文件配置 827
45.5 博客系统的前台设计 828
45.5.1 前台功能设计概述 828
45.5.2 用户信息显示设计 829
45.5.3 功能选择菜单设计 829
45.5.4 日志列表页面设计 830
45.5.5 发布评论页面设计 831
45.5.6 相册页面设计 834
45.5.7 好友信息页面设计 836
45.5.8 版权信息显示页面 837
45.6 博客系统的后台设计 837
45.6.1 后台管理功能设计概述 837
45.6.2 用户登录模块设计 837
45.6.3 用户信息维护模块 839
45.6.4 日志维护模块 842
45.6.5 相册维护模块 844
45.6.6 好友维护模块 845
45.6.7 退出系统 847
45.7 本章小结 847