第1篇 PHP开发篇 2
第1章 初识PHP 2
1.1 初识PHP 2
1.1.1 走近PHP 2
1.1.2 搭建开发环境 3
1.1.3 HelloWorld 7
1.2 第一个PHP程序——我的书房 8
1.2.1 我的书房之欢迎光临 8
1.2.2 我的书房之显示时间 9
1.2.3 我的书房之临别赠言 9
1.3 在HTML中嵌入PHP 11
1.3.1 把PHP嵌入HTML 11
1.3.2 PHP语句结束符 12
1.3.3 注释程序 12
1.3.4 引用文件 12
1.3.5 PHP与C、Java 13
1.4 ASP、PHP、JSP的比较 13
本章小结 14
第2章 PHP程序设计基础 15
2.1 数据类型 15
2.1.1 理解数据类型 15
2.1.2 字符串 15
2.1.3 数字 16
2.1.4 常用函数 17
2.2 变量 17
2.2.1 理解变量 17
2.2.2 声明变量 17
2.2.3 变量赋值 18
2.2.4 变量替换 18
2.2.5 确定变量类型 19
2.2.6 变量的作用域 19
2.2.7 静态变量 20
2.2.8 使变量名可变 21
2.3 常量 21
2.3.1 定义和使用常量 21
2.3.2 PHP中的预定义常量 22
2.4 运算符 22
2.4.1 算术运算符 23
2.4.2 字符串运算符 23
2.4.3 赋值运算符 23
2.4.4 逻辑运算符 24
2.4.5 位运算符 24
2.4.6 其他运算符 24
2.4.7 运算符的优先级 25
2.5 程序结构 25
2.5.1 使用if语句实现分支 26
2.5.2 使用switch语句实现分支 27
2.5.3 使用while语句实现循环 28
2.5.4 使用for语句实现循环 29
2.5.5 使用break/continue控制循环 30
2.6 函数 30
2.6.1 理解函数的本质 30
2.6.2 定义和调用函数 31
2.6.3 在函数间传递参数 32
2.6.4 使函数名可变 33
2.6.5 使用递归 33
2.7 综合示例 34
本章小结 36
第3章 字符串和数组操作 37
3.1 操作字符串 37
3.1.1 去除空格和其他特殊符号 37
3.1.2 加入和去除反斜杠 38
3.1.3 生成HTML元素 38
3.1.4 分解字符串 40
3.1.5 格式化字符串 40
3.1.6 获取和替换子串 41
3.1.7 定位字符 41
3.1.8 求串长度 42
3.1.9 获取ASCII编码 42
3.1.10 比较字符串 42
3.1.11 大小写转换 43
3.1.12 小结 43
3.2 正则表达式 43
3.2.1 理解正则表达式 44
3.2.2 使用正则表达式 45
3.2.3 构造正则表达式 45
3.2.4 示例1验证URL 48
3.2.5 示例2验证电话号码 48
3.3 规则数组 49
3.3.1 理解数组 49
3.3.2 定义一个数组 50
3.3.3 遍历数组元素 50
3.3.4 获取当前元素 51
3.3.5 改变数组大小 52
3.3.6 数组求交 53
3.3.7 合并两个数组 54
3.3.8 反转一个数组 54
3.3.9 获取多个元素 55
3.3.10 排序数组元素 56
3.3.11 综合示例 56
3.4 相联数组 59
3.4.1 理解相联数组 59
3.4.2 增加数组元素 60
3.4.3 删除数组元素 60
3.4.4 检测键是否存在 60
3.4.5 检测值是否存在 61
3.4.6 小结 61
本章小结 61
第4章 PHP的面向对象编程技术 62
4.1 面向对象技术简介 62
4.1.1 理解面向对象思想 62
4.1.2 理解类和对象 64
4.1.3 用继承来重用代码 64
4.1.4 用多态来统一对外 65
4.1.5 是否选择面向对象 65
4.2 在PHP中使用类 66
4.2.1 创建类和对象 66
4.2.2 使用构造函数 68
4.2.3 继承已有的类 69
4.2.4 重载新的方法 70
4.2.5 访问父类中的方法 71
4.3 PHP5的面向对象新特征 72
4.3.1 控制访问权限 72
4.3.2 静态属性和方法 74
4.3.3 使用__construct()和__destruct() 76
4.3.4 使用__clone()克隆对象 77
4.3.5 使用抽象方法和抽象类 78
4.3.6 使用__call()处理调用错误 80
4.3.7 使用__autoload()自动加载类 81
4.3.8 把对象串行化 81
本章小结 83
第5章 PHP的MySQL数据库编程 84
5.1 Web系统的体系结构 84
5.2 连接和关闭数据库 85
5.2.1 连接数据库 85
5.2.2 关闭数据库连接 86
5.3 数据库级操作 86
5.3.1 创建、选择、删除数据库 87
5.3.2 示例“我的书房”之库级操作 87
5.4 增删改数据 88
5.4.1 提交SQL语句 88
5.4.2 示例“我的书房”之增删改图书 89
5.5 查询数据 91
5.5.1 使用mysql_result()获取查询记录集 91
5.5.2 使用mysql fetch row()以数组的形式返回查询结果 92
5.5.3 使用mysql_fetch_array获取当前行数据 94
5.5.4 使用mysql_fetch_object()以对象的形式返回查询结果 95
5.5.5 综合比较 96
5.6 获取数据库信息 96
5.6.1 获取数据库基本信息 96
5.6.2 获取数据表属性信息 98
5.6.3 获取查询结果数目 99
5.7 其他常用操作 100
5.7.1 处理错误信息 100
5.7.2 释放内存 101
5.7.3 切换用户 102
5.7.4 获取插入记录自动标识 102
5.8 综合示例 102
5.8.1 系统概述 102
5.8.2 设置环境变量 103
5.8.3 数据库类 103
5.8.4 图书类 105
5.8.5 主页面 107
5.8.6 添加记录 109
5.8.7 修改记录 110
5.8.8 删除记录 110
5.8.9 显示查询记录 111
本章小结 112
第6章 PHP的文件系统 113
6.1 访问文件 113
6.1.1 打开和关闭文件 113
6.1.2 读取文件内容 114
6.1.3 写入文件内容 116
6.1.4 检测文件是否存在 116
6.1.5 检测文件访问权限 116
6.1.6 将文件内容赋值给数组 117
6.1.7 复制文件 117
6.2 操作目录 118
6.2.1 打开和关闭目录 118
6.2.2 读取目录 118
6.2.3 改变当前目录 119
6.2.4 获得脚本文件目录 119
6.2.5 使用目录对象 120
6.3 综合示例 120
63.1 我的文件管理器 120
6.3.2 我的文件查看器 123
本章小结 124
第7章 构建PHP动态网页 125
7.1 与表单(FORM)交互 125
7.1.1 认识表单 125
7.1.2 获取FORM信息 127
7.1.3 示例 127
7.2 管理Session 128
7.2.1 认识Session 128
7.2.2 注册Session变量 128
7.2.3 使用Session变量 129
7.2.4 注销Session变量 129
7.2.5 示例验证用户身份 130
7.3 页面跳转 130
7.3.1 使用header()函数 130
7.3.2 使用文件操作函数 131
7.4 HTML模板 132
7.5 管理图形图像 133
7.5.1 PHP支持的图像类型 133
7.5.2 管理画布 133
7.5.3 获得图像大小 135
7.5.4 向图像中加入文字 136
7.5.5 画点 136
7.5.6 画几何图形 137
7.5.7 填充几何图形 138
7.6 使用时间和日期函数 139
7.6.1 获取日期和时间 139
7.6.2 格式化输出日期和时间 141
7.7 处理URL字符串 142
7.7.1 分解URL 142
7.7.2 编码和解码URL 143
本章小结 144
第8章 PHP的网络编程 145
8.1 网络通信 145
8.1.1 使用POST上传文件 145
8.1.2 HTTP认证 147
8.1.3 Socket通信 148
8.2 电子邮件 149
8.2.1 打开一个邮箱 149
8.2.2 发送电子邮件 150
8.2.3 获取附件 151
8.2.4 综合示例 152
8.3 使用XML 155
8.3.1 理解XML 155
8.3.2 利用数组生成XML 156
8.3.3 使用DOM创建XML文档 158
8.3.4 使用DOM查询XML数据 160
8.3.5 使用DOM删除XML数据 160
8.3.6 使用DOM修改XML数据 161
8.3.7 综合示例 161
本章小结 166
第9章 PHP程序调试 167
9.1 基本调试策略 167
9.1.1 使用错误报告 167
9.1.2 使用die和print语句 168
9.2 使用Eclipse调试程序 170
9.2.1 了解PHPEclipse 170
9.2.2 使用PHPEclipse调试语法错误 173
9.2.3 使用PHPEclipse调试逻辑错误 173
本章小结 175
第2篇 MySQL数据库管理篇 178
第10章 初识MySQL 178
10.1 关系数据库基础 178
10.1.1 了解关系数据库 178
10.1.2 一个示例 179
10.1.3 数据库的功能 180
10.2 MySQL概述 180
10.2.1 了解MySQL 181
10.2.2 使用MySQL 181
10.3 创建第一个MySQL数据库 182
10.3.1 连接MySQL服务器 182
10.3.2 建立student_course数据库 182
10.3.3 建立表 183
10.3.4 添加数据 184
10.3.5 查询数据 185
10.3.6 修改数据 185
10.3.7 删除数据 185
10.3.8 数据的位置 186
10.4 MySQL的数据类型 187
10.4.1 数值型 187
10.4.2 字符串型 188
10.4.3 日期和时间类型 188
10.4.4 NULL值 189
本章小结 189
第11章 数据库设计理论 190
11.1 数据库设计概述 190
11.1.1 数据库设计的定义 190
11.1.2 数据库设计的目标 191
11.1.3 数据库的体系结构 191
11.1.4 数据库设计的步骤 192
11.2 需求分析 194
11.2.1 需求分析的目标 194
11.2.2 收集需求信息 194
11.2.3 分析整理需求 194
11.2.4 评审 195
11.3 概念设计 195
11.3.1 理解E-R图数据模型 195
11.3.2 用E-R图为现实建模 196
11.3.3 示例 198
11.4 逻辑设计 201
11.4.1 逻辑设计步骤 201
11.4.2 理解关系的概念 202
11.4.3 约束一个关系 203
11.4.4 关系中的异常 203
11.4.5 规范化关系 204
11.5 设计说明书示例 206
本章小结 208
第12章 管理MySQL 209
12.1 概述 209
12.1.1 MySQL的构成 209
12.1.2 管理概述 210
12.1.3 保障数据安全 211
12.2 使用客户机 211
12.2.1 使用mysql客户机 211
12.2.2 使用mysqladmin客户机 212
12.2.3 使用mysqldump客户机 214
12.3 MySQL服务器的启动和关闭 214
12.3.1 启动服务器 214
12.3.2 连接服务器 215
12.3.3 关闭服务器 215
12.4 用户和权限管理 216
12.4.1 创建新用户和授权 216
12.4.2 控制权限传递 218
12.4.3 取消权限和删除用户 218
12.4.4 了解MySQL的用户管理表 219
12.5 日志管理 219
12.5.1 生成日志文件 219
12.5.2 循环利用日志文件 220
12.6 备份数据库 220
12.6.1 使用mysqldump备份 220
12.6.2 使用直接拷贝数据文件方式 222
12.6.3 两种方式的比较 223
12.7 恢复数据库 223
12.7.1 恢复整个数据库 223
12.7.2 恢复单个表 224
本章小结 224
第13章 使用MySQL管理数据 225
13.1 SQL基础 225
13.1.1 SQL简介 225
13.1.2 了解SQL语句 226
13.1.3 在SQL中加注释 226
13.1.4 MySQL中的SQL特征 227
13.2 创建、删除和选择数据库 227
13.2.1 创建数据库(CREATE DATABASE) 227
13.2.2 删除数据库(DROP DATABASE) 228
13.2.3 选择数据库(USE) 228
13.3 创建、修改、删除数据表 229
13.3.1 创建表(CREATE TABLE) 229
13.3.2 创建不存在的表(IF NOT EXISTS) 231
13.3.3 创建临时表(TEMPORARY) 231
13.3.4 利用SELECT的结果创建表 232
13.3.5 修改表(ALTER TABLE) 232
13.3.6 删除表(DROP TABLE) 233
13.4 创建和删除索引 233
13.4.1 使用索引优化查询 234
13.4.2 创建索引 235
13.4.3 删除索引 236
13.5 增删改数据 236
13.5.1 使用INSERT增加记录 236
13.5.2 使用LOAD DATA批量增加记录 238
13.5.3 使用mysqlimport批量增加记录 238
13.5.4 修改记录(UPDATE) 238
13.5.5 删除记录(DELETE) 238
13.6 查询数据 239
13.6.1 选择列 239
13.6.2 选择数据表 240
13.6.3 使用WHERE选择记录 241
13.6.4 使用GROUP BY对结果分组 243
13.6.5 使用DISTINCT对结果去重 244
13.6.6 使用ORDER BY对结果排序 244
13.6.7 使用CONCAT联合多列 245
13.6.8 使用LIMIT限定结果行数 246
13.6.9 使用函数和表达式 246
13.7 查询数据库、表信息 247
13.8 MySQL不支持的功能 248
本章小结 250
第14章 查询优化 251
14.1 索引技术 251
14.1.1 了解索引机制 251
14.1.2 选择索引列 253
14.1.3 索引的缺点 255
14.1.4 分析索引效率 255
14.2 选择列类型 256
14.2.1 使用较短定长列 257
14.2.2 使用NOT NULL和ENUM 257
14.2.3 使用OPTIMIZE TABLE 257
14.2.4 避免检索较大的BLOB或TEXT值 258
14.2.5 使用PROCEDURE ANALYSE() 258
14.3 优化SQL语句 259
14.3.1 避免对数据的顺序存取 259
14.3.2 避免通配符 259
14.3.3 比较两个列 260
14.3.4 使索引列独立 260
14.3.5 使用临时表 261
14.3.6 综合示例 262
14.4 系统优化 263
14.4.1 增加服务器缓存 264
14.4.2 使用查询缓存 265
14.4.3 调度与锁定数据 266
14.4.4 调整硬件 267
本章小结 268
第15章 MySQL数据安全性 269
15.1 数据文件安全性 269
15.1.1 保护的文件内容 270
15.1.2 保护Windows文件 270
15.1.3 保护UNIX文件 271
15.2 网络访问安全性 273
15.2.1 通过授权表确认访客 273
15.2.2 检查访问用户合法性 274
15.2.3 控制库级访问 276
15.2.4 控制表级访问 277
15.2.5 控制列级访问 278
15.2.6 使用授权表示例 278
15.3 数据库维护 279
15.3.1 检查和维护数据库表 279
15.3.2 使用myisamchk和isamchk 280
15.3.3 检查表 280
15.3.4 修复表 281
15.3.5 快速运行myisamchk和isamchk 283
15.4 预防性检查 283
15.4.1 建立预防性维护时间表 284
15.4.2 在Linux下定期检查表 284
15.4.3 在Windows下定期检查表 285
本章小结 286
第16章 图形化管理MySQL 287
16.1 使用phpMyAdmin 287
16.1.1 Linux系统的安装配置 288
16.1.2 Windows系统的安装配置 288
16.1.3 库级操作 289
16.1.4 表级操作 290
16.1.5 增删改数据 292
16.1.6 查询数据 292
16.1.7 导出数据 293
16.2 其他图形管理工具 295
16.2.1 MySQL Control Center 295
16.2.2 MySQLGUI 298
16.2.3 MySQL Administrator+MySQL Query Browser 299
本章小结 300
第3篇 典型模块设计篇 302
第17章 简易聊天室 302
17.1 系统目标 302
17.2 关键技术 302
17.2.1 自动刷新页面 302
17.2.2 传递用户名 303
17.2.3 显示最新发言 303
17.3 数据库设计 304
17.3.1 设计数据库 304
17.3.2 实现数据库 305
17.4 系统实现 305
17.4.1 参数配置文件 305
17.4.2 登录页面 306
17.4.3 聊天室主页面 306
17.4.4 显示发言页面 307
17.4.5 发言页面 309
本章小结 310
第18章 支持用户管理的聊天室 311
18.1 系统目标 311
18.2 关键技术 311
18.2.1 自动注册 312
18.2.2 检查表单 312
18.2.3 选择字体颜色 313
18.2.4 显示字体颜色 314
18.2.5 记录用户状态 314
18.3 数据库设计 314
18.3.1 设计数据库 314
18.3.2 实现数据库 315
18.4 系统实现 316
18.4.1 用户登录 316
18.4.2 检查用户 318
18.4.3 重新登录 319
18.4.4 聊天室主页面 321
18.4.5 用户发言 322
18.4.6 显示发言 325
18.4.7 显示在线用户 326
18.4.8 离开系统 327
本章小结 328
第19章 支持信息加密的用户验证 329
19.1 加密技术简介 329
19.1.1 加密的功能 329
19.1.2 常用加密方法 330
19.2 XOR运算加密算法 330
19.2.1 XOR算法原理 331
19.2.2 XOR算法实现 331
19.2.3 用XOR算法实现身份验证 332
19.2.4 自动生成密钥 334
19.3 用crypt()实现用户身份验证 336
19.3.1 了解crypt() 336
19.3.2 用crypt()实现用户身份验证 337
19.4 MD5散列加密算法 338
19.4.1 了解MD5 338
19.4.2 使用MD5实现用户身份验证 339
19.4.3 还原明文 340
本章小结 341
第20章 支持分页显示的拍卖行 343
20.1 系统目标 343
20.2 关键技术 343
20.2.1 分页显示 344
20.2.2 页面导航 346
20.2.3 上传图片 347
20.2.4 显示图片 348
20.2.5 用户竞标 348
20.3 数据库设计 348
20.3.1 设计数据库 349
20.3.2 实现数据库 349
20.4 系统实现 350
20.4.1 系统菜单 350
20.4.2 配置文件 351
20.4.3 分页显示类 351
20.4.4 用户登录 354
20.4.5 检查用户 356
20.4.6 添加商品 358
20.4.7 上传图片 361
20.4.8 浏览商品 364
20.4.9 显示商品详单 370
20.4.10 出价竞标 374
本章小结 375
第21章 支持站内搜索的留言本 376
21.1 系统目标 376
21.2 关键技术 377
21.2.1 组织留言内容 377
21.2.2 分页显示留言信息 378
21.2.3 传递留言ID 379
21.2.4 留言回复 379
21.2.5 全文搜索留言信息 380
21.2.6 独立搜索模块 381
21.3 数据库设计 381
21.3.1 设计数据库 381
21.3.2 实现数据库 382
21.4 系统实现 383
21.4.1 添加留言页面 383
21.4.2 站内搜索单元 387
21.4.3 显示查询结果 388
21.4.4 修改留言页面 392
21.4.5 回复留言模块 394
21.4.6 查看留言回复 397
21.4.7 删除留言模块 399
21.4.8 系统扩展 400
本章小结 400
第4篇 综合案例篇 402
第22章 开发大型项目的策略 402
22.1 开发规范标准化 402
22.1.1 规范化命名 402
22.1.2 规范化大括号使用 405
22.1.3 规范化小括号使用 406
22.1.4 规范化注释 407
22.1.5 管理文档 408
22.1.6 实施标准 409
22.2 Web系统的逻辑结构 409
22.2.1 大型Web系统的结构 409
22.2.2 API化服务器端代码 410
22.2.3 使用模板 411
本章小结 412
第23章 电子商务系统 413
23.1 需求分析 413
23.1.1 电子商务简介 413
23.1.2 用户行为分析 413
23.1.3 系统目标 414
23.2 系统预览 415
23.2.1 浏览、查询图书 415
23.2.2 购买图书 415
23.2.3 注册、登录系统 416
23.2.4 查看我的购物车 416
23.2.5 生成我的购物订单 416
23.3 系统架构 417
23.3.1 总体设计 417
23.3.2 系统体系结构 418
23.4 数据库设计 418
23.5 数据访问层 420
23.5.1 数据库配置文件 420
23.5.2 DataBase的属性 421
23.5.3 实现ExecuteSql()方法 421
23.5.4 实现Query()方法 421
23.6 业务逻辑层 421
23.6.1 图书类Book 421
23.6.2 购物车类Cart 423
23.6.3 会员类User 425
23.6.4 订单类Order 428
23.6.5 订单详细信息类OrderDetail 430
23.7 页面显示层 431
23.7.1 分页显示类 431
23.7.2 图书浏览查询 433
23.7.3 购物车管理 436
23.7.4 会员管理 440
23.7.5 订单管理 444
本章小结 448
第24章 办公自动化系统 450
24.1 需求分析 450
24.1.1 办公自动化简介 450
24.1.2 用户行为分析 450
24.1.3 系统目标 451
24.2 系统预览 452
24.2.1 进入办公平台 452
24.2.2 撰写、上报公文 453
24.2.3 审批公文 453
24.2.4 发布、查看公告 453
24.2.5 查看系统日志 454
24.3 系统架构 454
24.3.1 总体设计 455
24.3.2 系统体系结构 455
24.4 数据库设计 456
24.5 数据访问层 458
24.6 业务逻辑层 458
24.6.1 用户类User 459
24.6.2 普通员工用户类UserEmployee 460
24.6.3 管理者用户类UserManager 460
24.6.4 角色类Role 461
24.6.5 公文类File 462
24.6.6 公文状态类Status 466
24.6.7 公文类属类Category 466
24.6.8 公共消息类PublicMessage 466
24.6.9 日志类Log 469
24.7 页面显示层 470
24.7.1 分页显示类 470
24.7.2 系统首页 470
24.7.3 用户管理 472
24.7.4 个人办公 475
24.7.5 公告管理 480
24.7.6 日志管理 480
24.7.7 退出系统 481
本章小结 482