第1部分 PHP 5程序设计 1
第1章 PHP 5程序设计快速入门 2
1.1 PHP概述 2
1.1.1 PHP是什么 2
1.1.2 PHP的发展 2
1.1.3 PHP的特点 4
1.1.4 PHP 5新特性 5
1.1.5 PHP能做什么 6
1.1.6 PHP应用如何工作 7
1.1.7 PHP脚本概貌 8
1.1.8 需要了解的相关知识 12
1.2 如何开始PHP应用 13
1.2.1 快速配置Apache+PHP服务器环境 13
1.2.2 编写第一个PHP程序 21
1.2.3 处理表单实现与客户端交互 22
1.3 常用代码编辑工具简介 26
1.4 学习资源 28
1.5 小结 28
第2章 PHP语法基础 30
2.1 编写PHP代码 30
2.1.1 PHP代码基本语法 30
2.1.2 使用注释 32
2.1.3 HTML中嵌入PHP代码 35
2.1.4 JavaScript中嵌入PHP代码 42
2.1.5 使用include和require引用(包含)文件 43
2.2 数据类型 45
2.2.1 基本数据类型 46
2.2.2 数组基本概念 47
2.2.3 resource类型和NULL类型 48
2.3 常量与变量 49
2.3.1 常量 49
2.3.2 预定义常量 50
2.3.3 变量 51
2.3.4 引用变量 53
2.3.5 可变变量 53
2.3.6 PHP保留字 54
2.3.7 变量类型转换 55
2.3.8 变量作用域 58
2.3.9 静态变量 60
2.4 PHP预定义变量 61
2.4.1 PHP预定义变量简介 61
2.4.2 GLOBALS数组 62
2.4.3 $_SERVER数组 62
2.4.4 $_ENV数组 65
2.4.5 $_GET数组 66
2.4.6 $_POST数组 66
2.4.7 $_COOKIE数组 67
2.4.8 $_FILES数组 70
2.4.9 $_REQUEST数组 71
2.4.10 $_SESSION数组 71
2.4.11 使用$_POST数组和$_GET数组获取客户端信息 74
2.5 表达式与运算符 83
2.5.1 表达式 83
2.5.2 运算符简介 84
2.5.3 算术运算符 84
2.5.4 赋值运算符 85
2.5.5 位运算符 86
2.5.6 比较运算符 87
2.5.7 逻辑运算符 88
2.5.8 字符串运算符 88
2.5.9 条件运算符 89
2.5.10 数组运算符 89
2.5.11 特殊运算符 91
2.5.12 各种运算符优先顺序 92
2.6 流程控制语句 93
2.6.1 for循环语句 93
2.6.2 while循环语句 94
2.6.3 do…while循环语句 94
2.6.4 foreach循环语句 94
2.6.5 条件语句if…else 96
2.6.6 continue和break语句 98
2.6.7 分支语句switch 98
2.6.8 流程控制语句的嵌套 99
2.6.9 流程控制语句与HTML的嵌套 100
2.6.10 流程控制替代语法 105
2.7 函数 105
2.7.1 自定义函数 106
2.7.2 函数的参数 107
2.7.3 return语句 109
2.7.4 函数的嵌套和递归调用 109
2.7.5 内建函数 109
2.8 小结 110
第3章 使用数组 111
3.1 PHP中的数组 111
3.2 定义及使用数组 111
3.2.1 一维数组 111
3.2.2 二维数组 115
3.2.3 多维数组 117
3.3 常用数组处理函数 117
3.3.1 查看数组所有元素 117
3.3.2 获取数组元素个数 119
3.3.3 在数组中搜索 120
3.3.4 遍历数组 122
3.3.5 分割数组 127
3.3.6 由数组中截取部分元素 129
3.3.7 合并数组 130
3.3.8 联合数组 134
3.3.9 对数组元素进行排序 135
3.3.10 删除与追加元素 141
3.3.11 移动数组指针位置 142
3.3.12 替换数组中部分元素 143
3.3.13 通过拆分字符串产生数组 143
3.3.14 多个数组排序 145
3.3.15 其他数组处理函数 148
3.4 小结 149
第4章 字符串 150
4.1 PHP中使用字符串 150
4.1.1 单引号与双引号 150
4.1.2 使用定界符定义大文本 152
4.1.3 使用花括号{} 153
4.1.4 访问和修改字符串中的字符 155
4.1.5 连接字符串 156
4.2 输出字符串 156
4.2.1 echo语句 156
4.2.2 print()函数 158
4.2.3 printf()函数 158
4.2.4 sprintf()函数 161
4.3 常用字符串处理函数 161
4.3.1 字符串长度 161
4.3.2 分割字符串 161
4.3.3 比较字符串 164
4.3.4 在字符串中查找字符 165
4.3.5 截取子字符串 167
4.3.6 截取中文字符串 169
4.3.7 关于Multi-Byte String函数 172
4.3.8 替换子字符串 173
4.3.9 高亮显示部分字符 175
4.3.10 数组与字符串 175
4.3.11 去除字符串中空白 176
4.3.12 md5()函数 177
4.3.13 nl2br()函数 177
4.3.14 number_format()函数格式化小数 177
4.4 小结 178
第5章 正则表达式 179
5.1 正则表达式概念 179
5.1.1 什么是正则表达式 179
5.1.2 正则表达式可以做什么 179
5.1.3 正则表达式语法 180
5.1.4 匹配多字符元字符 181
5.1.5 匹配自定义范围 182
5.1.6 定义匹配次数 182
5.1.7 或元字符 183
5.1.8 子模式 183
5.1.9 特殊意义元字符 183
5.1.10 转义字符 183
5.1.11 匹配次数的贪婪与非贪婪 184
5.1.12 反向引用 184
5.1.13 匹配编码 185
5.1.14 预搜索-条件子模式 185
5.1.15 PHP正则表达式 185
5.2 Perl兼容语法正则表达式 186
5.2.1 修正符 186
5.2.2 查找字符串(Perl兼容语法) 187
5.2.3 替换字符串(Perl兼容语法) 190
5.2.4 分割字符串(Perl兼容语法) 192
5.3 POSIX扩展正则表达式 193
5.3.1 查找字符串(POSIX扩展) 194
5.3.2 替换字符串(POSIX扩展) 195
5.3.3 分割字符串(POSIX扩展) 195
5.3.4 将字符串转换为正则表达式 196
5.4 使用正则表达式处理字符串 196
5.4.1 提取字符串中电话号码 196
5.4.2 检验用户名和密码格式 198
5.4.3 检验电子邮件地址 200
5.4.4 检测全中文字符串 202
5.5 小结 203
第6章 日期与时间 205
6.1 日期与时间 205
6.1.1 UNIX时间戳 205
6.1.2 时区 205
6.2 PHP日期与时间处理 206
6.2.1 格式化日期与时间 207
6.2.2 获取时间信息 212
6.2.3 日期与时间的计算 217
6.2.4 检验日期 222
6.3 实现万年历 222
6.4 小结 231
第7章 文件系统 232
7.1 文件处理 232
7.1.1 打开、创建文件 232
7.1.2 关闭文件 234
7.1.3 读文件内容 234
7.1.4 移动文件指针 238
7.1.5 fseek()与fgets()提取文件内容 240
7.1.6 写文件内容 241
7.1.7 判断文件是否存在 243
7.1.8 获取文件大小、类型、路径、修改时间等属性 244
7.1.9 复制文件 246
7.1.10 删除文件 246
7.1.11 重命名、移动文件 246
7.1.12 实现文本计数器 247
7.2 目录管理 248
7.2.1 新建目录 248
7.2.2 打开、读取、关闭目录 248
7.2.3 获取磁盘大小 251
7.2.4 删除目录 252
7.3 上传文件 252
7.3.1 理解HTTP POST上传 252
7.3.2 影响文件上传的php.ini设置 254
7.3.3 单个文件上传 254
7.3.4 多个文件上传 257
7.4 小结 262
第8章 图像处理 263
8.1 PHP图像处理函数库 263
8.1.1 PHP图像处理简介 263
8.1.2 关于JpGraph类库 267
8.1.3 参数设置 267
8.2 常用图像处理 267
8.2.1 创建画布 268
8.2.2 色彩处理 269
8.2.3 输出图像 271
8.2.4 描点 274
8.2.5 画线 275
8.2.6 绘制基本形状 279
8.2.7 绘制填充图形 281
8.2.8 绘制字符串 284
8.2.9 复制图像 284
8.2.10 其他常用函数 285
8.2.11 将图像嵌入到HTML中 288
8.3 绘制规则曲线图 289
8.3.1 实现效果 290
8.3.2 设计思路 290
8.3.3 程序实现 291
8.4 绘制折线图 295
8.4.1 实现效果 295
8.4.2 设计思路 296
8.4.3 程序实现 296
8.5 绘制立体柱状图 301
8.5.1 实现效果 301
8.5.2 设计思路 301
8.5.3 程序实现 303
8.6 绘制彩色饼图 310
8.6.1 实现效果 310
8.6.2 设计思路 311
8.6.3 程序实现 313
8.7 绘制彩色立体饼图 318
8.7.1 实现效果 318
8.7.2 设计思路 318
8.7.3 程序实现 319
8.8 绘制股票K线图 322
8.8.1 实现效果 322
8.8.2 设计思路 322
8.8.3 程序实现 323
8.9 小结 325
第9章 面向对象的PHP 327
9.1 面向对象技术基础 327
9.1.1 面向对象简介 327
9.1.2 抽象与封装 327
9.1.3 类与对象 328
9.1.4 继承、多态、接口 328
9.2 在PHP中使用面向对象技术 329
9.2.1 定义类 330
9.2.2 使用对象 332
9.2.3 构造函数与析构函数 333
9.2.4 子类 336
9.2.5 范围解析运算符“∷” 336
9.2.6 访问控制 339
9.2.7 静态属性与静态方法 340
9.2.8 抽象类与抽象方法 342
9.2.9 final修饰符 343
9.2.10 _call()、_set()和_get()方法 343
9.2.11 克隆对象 346
9.2.12 自动加载类文件 349
9.2.13 类型提示 349
9.2.14 instanceof关键字 350
9.2.15 接口 350
9.3 类/对象库函数 351
9.4 小结 354
第2部分 MySQL 5开发 355
第10章 MySQL 5快速入门 356
10.1 MySQL简介 356
10.1.1 MySQL是什么 356
10.1.2 MySQL特点 357
10.1.3 MySQL数据库容量 358
10.1.4 MySQL许可 358
10.1.5 MySQL 5成功案例 359
10.1.6 MySQL 5支持的特性 360
10.2 安装与配置MySQL 5 361
10.2.1 Linux下的安装 361
10.2.2 Linux下配置MySQL 5 362
10.2.3 关于字符集设置 364
10.2.4 Linux下启动与停止MySQL 366
10.2.5 Windows下安装配置MySQL 5 366
10.2.6 Windows下启动与停止MySQL 373
10.3 MySQL 5 GUI Tools图形界面工具 374
10.3.1 MySQL Administrator 375
10.3.2 MySQL Query Browser 380
10.4 可视化管理工具phpMyAdmin 381
10.5 小结 382
第11章 MySQL基本操作 383
11.1 使用MySQL命令行 383
11.1.1 连接与断开MySQL服务器 383
11.1.2 执行SQL语句 384
11.1.3 创建数据库CREATE DATABASE 386
11.1.4 关于字符校对collate 387
11.1.5 删除数据库DROP DATABASE 388
11.1.6 创建数据库表CREATE TABLE 388
11.1.7 查看表结构 391
11.1.8 删除表DROP TABLE 392
11.1.9 重命名表RENAME TABLE 392
11.1.10 修改表结构ALTER TABLE 392
11.1.11 浏览数据库记录SELECT 394
11.1.12 插入记录INSERT 395
11.1.13 修改记录UPDATE 396
11.1.14 删除记录DELETE 397
11.2 使用MySQL Query Browser 397
11.2.1 管理数据库 398
11.2.2 管理数据表 398
11.2.3 执行SQL语句 400
11.2.4 管理数据库记录 402
11.3 使用phpMyAdmin 403
11.3.1 管理数据库 403
11.3.2 管理数据表 404
11.3.3 管理数据记录 407
11.3.4 导入与导出 409
11.4 PHP中访问MySQL 411
11.4.1 配置PHP 411
11.4.2 一般步骤 412
11.5 mysql函数库 413
11.5.1 连接数据库 413
11.5.2 选择数据库 414
11.5.3 执行SQL语句 414
11.5.4 读取结果集 416
11.5.5 关闭连接 418
11.5.6 服务器信息 418
11.5.7 应用实例 419
11.5.8 关于MySQL 5的中文问题 422
11.6 mysqli扩展 422
11.6.1 配置PHP 423
11.6.2 mysqli类与mysqli函数库 423
11.6.3 连接数据库 423
11.6.4 选择数据库 424
11.6.5 执行SQL语句 425
11.6.6 读取结果集 426
11.6.7 关闭连接 429
11.6.8 服务器信息 429
11.6.9 应用实例 430
11.7 小结 432
第12章 使用SQL语句 433
12.1 SELECT语句 433
12.1.1 SELECT语句语法 433
12.1.2 选择所有列 437
12.1.3 选择部分列 438
12.1.4 使用别名 438
12.1.5 使用表达式 439
12.1.6 使用ORDER BY对结果排序 441
12.1.7 限制返回结果行数 442
12.1.8 使用DISTINCT消除重复行 442
12.2 WHERE条件子句 443
12.2.1 基本WHERE子句 443
12.2.2 使用AND、OR和NOT 443
12.2.3 使用比较运算符 444
12.2.4 使用BETWEEN AND运算符 444
12.2.5 查找空值IS NULL 445
12.2.6 使用LIKE关键字 445
12.2.7 使用IN列表 446
12.3 使用内部函数 446
12.3.1 字符串处理函数 447
12.3.2 日期与时间处理函数 449
12.3.3 数值处理函数 451
12.3.4 比较函数 451
12.4 聚合函数与记录分组 452
12.4.1 聚合函数 452
12.4.2 使用GROUP BY对记录分组 453
12.4.3 HAVING子句 453
12.5 多表联合查询 453
12.5.1 FROM子句中的多表联合查询 454
12.5.2 使用JOIN…ON关键字进行多表查询 455
12.6 子查询 456
12.6.1 FROM子句中的子查询 456
12.6.2 WHERE子句中的子查询 458
12.6.3 INSERT、UPDATE和DELETE语句中使用子查询 458
12.6.4 IN列表中的子查询 459
12.6.5 EXISTS关键字中的子查询 460
12.7 使用UNION关键字 460
12.8 跨数据库联合查询 461
12.9 小结 461
第13章 视图、存储过程、触发器 462
13.1 视图 462
13.1.1 创建视图 462
13.1.2 修改视图 463
13.1.3 删除视图 464
13.1.4 使用视图 464
13.2 存储过程简介 464
13.3 创建存储过程 465
13.4 在PHP中调用存储过程 467
13.4.1 定义变量与赋值 469
13.4.2 使用SELECT…INTO为变量赋值 469
13.4.3 将变量值返回给调用者 470
13.4.4 流程控制语句 470
13.4.5 使用游标 474
13.5 修改存储过程 475
13.6 删除存储过程 475
13.7 存储过程应用实例 475
13.8 MySQL 5触发器 480
13.8.1 创建触发器 481
13.8.2 删除触发器 482
13.9 触发器应用实例 482
13.10 小结 484
第3部分 Web应用开发 485
第14章 Web应用工程方法 486
14.1 Web应用目录结构 486
14.2 关于技术规范 487
14.2.1 编码规范 487
14.2.2 数据库设计规范 490
14.2.3 逐步求精的设计方法 491
14.3 有效使用require方法 492
14.4 封装数据库访问类 493
14.4.1 基于mysql扩展 493
14.4.2 基于mysqli扩展 499
14.5 关于index文件 503
14.6 PHP调试方法 504
14.7 小结 505
第15章 使用SmartTemplate模板 506
15.1 使用模板引擎 506
15.2 SmartTemplate模板引擎简介 507
15.3 使用SmartTemplate 507
15.3.1 配置SmartTemplate 507
15.3.2 SmartTemplate使用步骤 508
15.3.3 BEGIN…END处理数组 510
15.3.4 BEGIN…END扩展属性 514
15.3.5 BEGIN…END嵌套 516
15.3.6 判断结构 518
15.3.7 下拉列表 521
15.4 小结 521
第16章 企业信息发布系统 523
16.1 系统功能简介 523
16.2 系统设计 523
16.2.1 系统整体设计 523
16.2.2 数据库设计 524
16.3 搭建系统框架 525
16.3.1 建立系统目录结构 525
16.3.2 系统公用PHP程序 526
16.3.3 系统CSS文件 526
16.3.4 设计Web页面布局及切分页面 531
16.3.5 系统公用页面顶部文件 537
16.3.6 系统公用页面底部文件 540
16.3.7 系统公用页面左部文件 540
16.3.8 组合各部分生成页面 542
16.3.9 系统公用文件包 544
16.4 信息管理模块 546
16.4.1 使用session建立安全系统 547
16.4.2 最简单的登录系统——基于文本的用户登录 549
16.4.3 添加新闻、图片、附件 553
16.4.4 关于页面跳转与页面刷新 558
16.4.5 新闻查询、修改、删除 559
16.4.6 分页显示 573
16.4.7 公告模块 578
16.5 信息浏览模块 581
16.5.1 首页 581
16.5.2 查看信息内容 585
16.5.3 站内搜索 586
16.6 小结 589
第17章 留言板系统 590
17.1 功能简介 590
17.2 系统设计 590
17.2.1 系统整体设计 590
17.2.2 数据库设计 590
17.3 系统实现 591
17.3.1 留言模块首页 591
17.3.2 添加留言 597
17.3.3 浏览留言 597
17.3.4 回复留言 604
17.3.5 管理留言 607
17.4 小结 613
第18章 使用SmartTemplate实现图书借阅管理系统 615
18.1 系统功能简介 615
18.2 系统设计 616
18.2.1 系统整体设计 616
18.2.2 数据库设计 617
18.2.3 关于中图分类号、索书号、ISBN、图书编号 620
18.2.4 设置MySQL表的auto_increment属性以实现图书编号 622
18.3 搭建系统框架 622
18.3.1 系统目录结构 622
18.3.2 Web页面布局 623
18.3.3 系统公用文件 623
18.3.4 关于文件命名 628
18.4 安全系统 629
18.4.1 基于数据库的多用户权限系统 629
18.4.2 系统登录 629
18.4.3 操作员管理 631
18.4.4 修改密码 639
18.5 基础数据管理 642
18.5.1 院系/部门管理 643
18.5.2 读者类别管理 648
18.5.3 出版社信息管理 654
18.5.4 图书状态管理 654
18.5.5 系统参数设置 655
18.6 图书管理模块 656
18.6.1 图书信息登记 657
18.6.2 图书信息管理 665
18.6.3 图书信息编辑 673
18.7 读者管理模块 680
18.7.1 读者信息登记 680
18.7.2 读者信息管理 682
18.7.3 读者信息编辑 683
18.8 借阅管理模块 685
18.8.1 借书 685
18.8.2 还书 691
18.8.3 借阅记录管理 694
18.8.4 预约记录管理 695
18.8.5 超期罚款管理 696
18.9 读者服务模块 702
18.9.1 读者登录 703
18.9.2 修改读者密码 704
18.9.3 借阅信息管理 704
18.9.4 图书查阅 708
18.10 小结 712