第1章 初识PHP 1
1.1 PHP概况 1
1.1.1 什么是PHP 1
1.1.2 PHP版本 1
1.1.3 PHP的应用领域 2
1.1.4 PHP5的新特性 3
1.2 PHP脚本程序工作流程 3
1.2.1 Web浏览器 4
1.2.2 HTML简介 4
1.2.3 PHP预处理器 4
1.2.4 Web服务器 4
1.2.5 数据库服务器 4
1.2.6 PHP程序的工作流程 5
1.3 准备PHP的开发条件 5
1.3.1 下载PHP及相关软件 5
1.3.2 代码编辑工具 6
1.3.3 下载PHP用户手册 7
第1章 初识PHP 1
1.1 PHP概况 1
1.1.1 什么是PHP 1
1.1.2 PHP版本 1
1.1.3 PHP的应用领域 2
1.1.4 PHP5的新特性 3
1.2 PHP脚本程序工作流程 3
1.2.1 Web浏览器 4
1.2.2 HTML简介 4
1.2.3 PHP预处理器 4
1.2.4 Web服务器 4
1.2.5 数据库服务器 4
1.2.6 PHP程序的工作流程 5
1.3 准备PHP的开发条件 5
1.3.1 下载PHP及相关软件 5
1.3.2 代码编辑工具 6
1.3.3 下载PHP用户手册 7
第2章 PHP环境搭建与开发工具 9
2.1 AppServ——Windows版PHP集成化安装包 9
2.2 WAMP安装与配置 12
2.2.1 Apache的获取与安装 12
2.2.2 PHP的获取与安装 15
2.2.3 MySQL的获取与安装 16
2.2.4 环境配置与测试 20
2.3 PHP开发环境的关键配置信息 22
2.3.1 Apache服务器的基本配置 22
2.3.2 PHP.INI文件的基本配置 22
2.4 解决PHP的常见配置问题 24
2.4.1 解决Apache服务器端口冲突 24
2.4.2 设置PHP的系统当前时间 24
2.4.3 增加PHP扩展模块 25
2.5 Dreamweaver开发工具 25
2.5.1 Dreamweaver中编码格式的选择 25
2.5.2 Dreamweaver创建表格 26
2.5.3 Dreamweaver创建表单 28
2.5.4 Dreamweaver创建站点 30
2.5.5 Dreamweaver创建第一个PHP程序 31
2.6 综合实例——输出一个漂亮的图片 32
第3章 PHP开发基础 35
3.1 PHP标记 35
3.2 编码规范 36
3.2.1 书写规范 36
3.2.2 命名规范 37
3.3 学习运用代码注释 38
3.3.1 使用PHP注释 38
3.3.2 有效使用注释 39
3.4 PHP常量 40
3.4.1 声明和使用常量 40
3.4.2 预定义常量 41
3.5 PHP变量 42
3.5.1 声明变量 43
3.5.2 变量赋值 43
3.5.3 变量作用域 44
3.5.4 可变变量 45
3.6 PHP数据类型 46
3.6.1 标量数据类型 46
3.6.2 复合数据类型 49
3.6.3 特殊数据类型 49
3.6.4 转换数据类型 50
3.6.5 检测数据类型 50
3.7 PHP运算符 51
3.7.1 算术运算符 51
3.7.2 字符串运算符 52
3.7.3 赋值运算符 53
3.7.4 位运算符 53
3.7.5 递增或递减运算符 54
3.7.6 逻辑运算符 55
3.7.7 比较运算符 56
3.7.8 三元运算符 57
3.7.9 运算符的使用规则 57
3.8 综合实例——比较某一天的产品销量 58
第4章 PHP流程控制语句 60
4.1 程序的3种控制结构 60
4.1.1 顺序结构 60
4.1.2 选择(分支)结构 61
4.1.3 循环结构 61
4.2 条件控制语句 62
4.2.1 if条件控制语句 62
4.2.2 switch多分支语句 64
4.3 循环控制语句 65
4.3.1 while循环语句 65
4.3.2 do…while循环语句 66
4.3.3 for循环语句 68
4.3.4 foreach循环语句 69
4.4 跳转语句 71
4.4.1 break跳转语句 71
4.4.2 continue跳转语句 71
4.5 包含语句 72
4.5.1 include()语句 72
4.5.2 require()语句 73
4.5.3 include_once()语句 74
4.5.4 require_once()语句 74
4.5.5 include()语句和require()语句的区别 75
4.6 综合实例——switch网页框架 77
第5章 PHP函数 80
5.1 PHP函数 80
5.1.1 定义和调用函数 80
5.1.2 在函数间传递参数 81
5.1.3 从函数中返回值 83
5.1.4 变量函数 83
5.1.5 对函数的引用 84
5.1.6 取消引用 84
5.2 PHP变量函数库 85
5.3 PHP字符串函数库 86
5.4 PHP日期时间函数库 88
5.5 PHP数学函数库 89
5.6 PHP文件系统函数库 90
5.7 MySQL函数库 92
5.8 PHP数组函数库 95
5.9 综合实例——超长文本的分页输出 96
第6章 字符串 100
6.1 初识字符串 100
6.2 转义、还原字符串 101
6.3 截取字符串 102
6.4 分割、合成字符串 103
6.5 替换字符串 104
6.5.1 str_ireplace()函数 104
6.5.2 substr_replace()函数 105
6.6 检索字符串 106
6.6.1 strstr()函数 106
6.6.2 substr_count()函数 107
6.7 去掉字符串首尾空格和特殊字符 108
6.7.1 ltrim()函数 108
6.7.2 rtrim()函数 109
6.7.3 trim()函数 109
6.8 字符串与HTML转换 110
6.9 综合实例——控制页面中输出字符串的长度 112
第7章 数组 115
7.1 数组概述 115
7.2 数组类型 116
7.3 声明数组 116
7.3.1 用户创建数组 117
7.3.2 函数创建数组 117
7.3.3 创建二维数组 118
7.4 遍历、输出数组 119
7.4.1 遍历数组 119
7.4.2 输出数组元素 122
7.5 PHP数组函数 122
7.5.1 获取数组中最后一个元素 122
7.5.2 删除数组中重复元素 122
7.5.3 获取数组中指定元素的键名 123
7.5.4 数组键与值的排序 124
7.5.5 字符串与数组的转换 125
7.6 PHP的全局数组 125
7.6.1 $_SERVER[ ]全局数组 125
7.6.2 $_GET[ ]和$_POST[ ]全局数组 126
7.6.3 $_COOKIE全局数组 128
7.6.4 $_ENV[ ]全局数组 128
7.6.5 $_REQUEST[ ]全局数组 128
7.6.6 $_SESSION[ ]全局数组 128
7.6.7 $_FILES[ ]全局数组 128
7.7 综合实例——多图片上传 128
第8章 Web交互 133
8.1 HTTP基础 133
8.2 变量 134
8.3 服务器信息 135
8.4 表单处理 137
8.4.1 创建表单 137
8.4.2 添加表单元素 137
8.4.3 方法 141
8.4.4 对参数进行自动引号处理 143
8.4.5 自处理页面 144
8.4.6 粘性表单 145
8.4.7 多值参数 146
8.4.8 粘性多值参数 147
8.4.9 表单验证 148
8.5 设置响应头 150
8.5.1 不同的内容类型 150
8.5.2 重定向 151
8.5.3 设置过期时间 151
8.5.4 HTTP认证 152
8.6 综合实例——简易博客 152
第9章 MySQL数据库 157
9.1 MySQL概述 157
9.1.1 MySQL的特点 157
9.1.2 SQL和MySQL 158
9.2 MySQL服务器的启动和关闭 158
9.2.1 启动MySQL服务器 159
9.2.2 连接MySQL服务器 159
9.2.3 关闭MySQL服务器 160
9.3 操作MySQL数据库 161
9.3.1 创建新数据库 161
9.3.2 选择指定数据库 161
9.3.3 删除指定数据库 162
9.4 操作MySQL数据表 162
9.4.1 创建一个表 162
9.4.2 查看数据表结构 163
9.4.3 修改数据表结构 164
9.4.4 重命名数据表 165
9.4.5 删除指定数据表 165
9.5 操作MySQL数据 166
9.5.1 向数据表中添加数据(INSERT) 166
9.5.2 更新数据表中数据(UPDATE) 166
9.5.3 删除数据表中数据(DELETE) 167
9.5.4 查询数据表中数据 167
9.6 MySQL数据库备份和恢复 170
9.6.1 数据的备份 170
9.6.2 数据恢复 171
9.7 MySQL数据类型 172
9.7.1 数字类型 172
9.7.2 字符串类型 173
9.7.3 日期和时间数据类型 174
9.8 phpMyAdmin图形化管理工具 175
9.8.1 管理数据库 175
9.8.2 管理数据表 176
9.8.3 管理数据记录 178
9.8.4 导入/导出数据 181
9.9 综合实例——MySQL的存储过程 182
第10章 PHP数据库编程 186
10.1 PHP操作MySQL数据库的步骤 186
10.2 PHP操作MySQL数据库的函数 187
10.2.1 mysql_connect()函数连接MySQL服务器 187
10.2.2 mysql_select_db()函数选择MySQL数据库 187
10.2.3 mysql_query()函数执行SQL语句 188
10.2.4 mysql_fetch_array()函数将结果集返回到数组中 188
10.2.5 mysql_fetch_row()函数从结果集中获取一行作为枚举数组 189
10.2.6 mysql_num_rows()函数获取查询结果集中的记录数 190
10.3 管理MySQL数据库中的数据 191
10.3.1 使用Insert语句动态添加公告信息 191
10.3.2 使用Select语句查询公告信息 194
10.3.3 使用update语句动态编辑公告信息 195
10.3.4 使用Delete语句动态删除公告信息 197
10.3.5 分页显示公告信息 198
10.4 综合实例——用户注册 201
第11章 Cookie与Session 205
11.1 Cookie管理 205
11.1.1 了解Cookie 205
11.1.2 创建Cookie 206
11.1.3 读取Cookie 207
11.1.4 删除Cookie 208
11.1.5 Cookie的生命周期 209
11.2 Session管理 209
11.2.1 了解Session 209
11.2.2 创建会话 210
11.2.3 Session设置时间 212
11.3 Session高级应用 213
11.3.1 Session临时文件 213
11.3.2 Session缓存 214
11.3.3 Session数据库存储 215
11.4 综合实例——判断用户的操作权限 217
第12章 日期和时间 224
12.1 PHP的时间观念 224
12.1.1 在php.ini文件中设置时区 224
12.1.2 通过date_default_timezone_set函数设置时区 225
12.2 UNIX时间戳 225
12.2.1 获取任意日期、时间的时间戳 225
12.2.2 获取当前时间戳 226
12.2.3 日期、时间转换为UNIX时间戳 226
12.3 日期和时间处理 227
12.3.1 格式化日期和时间 228
12.3.2 获取日期和时间信息 229
12.3.3 检验日期和时间的有效性 230
12.4 综合实例——倒计时 231
第13章 图形图像处理 233
13.1 了解GD2函数库 233
13.2 设置GD2函数库 234
13.3 常用的图像处理 234
13.3.1 创建画布 235
13.3.2 颜色处理 235
13.3.3 绘制文字 236
13.3.4 输出图像 238
13.3.5 销毁图像 239
13.4 运用Jpgraph类库绘制图像 240
13.4.1 Jpgraph类库简介 240
13.4.2 Jpgraph的安装 240
13.4.3 柱形图分析产品月销售量 241
13.4.4 折线图分析网站一天内的访问走势 242
13.4.5 3D饼形图展示各部门不同月份的业绩 244
13.5 综合实例——GD2函数生成图形验证码 245
第14章 文件和目录处理 249
14.1 基本的文件处理 249
14.1.1 打开一个文件 249
14.1.2 读取文件内容 251
14.1.3 向文件中写入数据 254
14.1.4 关闭文件指针 256
14.2 常用目录操作 256
14.2.1 打开指定目录 256
14.2.2 读取目录结构 257
14.2.3 关闭目录指针 257
14.3 文件上传 258
14.3.1 相关设置 258
14.3.2 全局变量$_FILES应用 258
14.3.3 文件上传函数 259
14.3.4 多文件上传 260
14.3.5 文件下载 261
14.4 综合实例——通过文本文件统计页面访问量 262
第15章 面向对象 266
15.1 一切皆是对象 266
15.1.1 什么是类 267
15.1.2 对象的由来 267
15.1.3 面向对象的特点 267
15.2 类的声明 268
15.2.1 类的定义 268
15.2.2 成员属性 269
15.2.3 成员方法 270
15.3 类的实例化 270
15.3.1 创建对象 270
15.3.2 访问类中成员 271
15.3.3 特殊的访问方法——“$this”和“::” 272
15.3.4 构造方法和析构方法 273
15.4 面向对象的封装特性 274
15.4.1 public(公共成员) 274
15.4.2 private(私有成员) 274
15.4.3 protected(保护成员) 275
15.5 面向对象的继承特性 276
15.5.1 类的继承——extends关键字 276
15.5.2 类的继承——parent::关键字 277
15.5.3 覆盖父类方法 277
15.6 抽象类和接口 278
15.6.1 抽象类 278
15.6.2 接口 280
15.7 面向对象的多态性 281
15.7.1 通过继承实现多态 281
15.7.2 通过接口实现多态 282
15.8 面向对象的关键字 283
15.8.1 final关键字 283
15.8.2 static关键字——声明静态类成员 283
15.8.3 clone关键字——克隆对象 284
15.9 面向对象的魔术方法 285
15.9.1 _ _set()和_ _get()方法 285
15.9.2 _ _isset()和_ _unset()方法 286
15.9.3 _ _call()方法 286
15.9.4 _ _toString()方法 287
15.9.5 _ _autoload()方法 287
15.10 综合实例——封装一个数据库操作类 288
第16章 PDO数据库抽象层 292
16.1 什么是PDO 292
16.1.1 PDO概述 292
16.1.2 PDO特点 293
16.1.3 安装PDO 293
16.2 PDO连接数据库 293
16.2.1 PDO构造函数 293
16.2.2 DSN详解 294
16.3 PDO中执行SQL语句 294
16.3.1 exec()方法 294
16.3.2 query()方法 295
16.3.3 预处理语句——prepare()和execute() 296
16.4 PDO中获取结果集 298
16.4.1 fetch()方法 298
16.4.2 fetchAll()方法 299
16.4.3 fetchColumn()方法 301
16.5 PDO中捕获SQL语句中的错误 302
16.5.1 使用默认模式——PDO::ERRMODE_SILENT 302
16.5.2 使用警告模式——PDO::ERRMODE_WARNING 303
16.5.3 使用异常模式——PDO::ERRMODE_EXCEPTION 304
16.6 PDO中错误处理 306
16.6.1 errorCode()方法 306
16.6.2 errorInfo()方法 307
16.7 PDO中事务处理 308
16.8 PDO中存储过程 310
16.9 综合实例——查询留言内容 312
第17章 Smarty模板引擎 315
17.1 走进Smarty模板引擎 315
17.1.1 Smarty模板引擎下载 316
17.1.2 Smarty模板引擎安装 317
17.1.3 Smarty模板引擎配置 317
17.1.4 Smarty模板的应用 318
17.2 Smarty模板设计——静态页处理 319
17.2.1 基本语法(注释、函数和属性) 320
17.2.2 Smarty模板设计变量 320
17.2.3 变量调节器 321
17.2.4 内建函数(动态文件、模板文件的包含和流程控制语句) 322
17.2.5 自定义函数 324
17.2.6 配置文件 325
17.3 Smarty程序设计——动态文件操作 326
17.3.1 SMARTY_PATH常量 326
17.3.2 Smarty程序设计变量 326
17.3.3 Smarty方法 327
17.3.4 Smarty缓存 327
17.4 综合实例——Smarty模板制作后台管理系统主页 329
第18章 综合案例——应用Smarty模板开发电子商务网站 334
18.1 需求分析 334
18.2 构建开发环境 335
18.3 系统设计 335
18.3.1 网站功能结构 335
18.3.2 系统流程图 336
18.4 数据库设计 337
18.4.1 数据库分析 337
18.4.2 创建数据库与数据表 337
18.5 搭建系统框架 339
18.6 公共文件设计 339
18.6.1 数据库连接、管理和分页类文件 340
18.6.2 Smarty模板配置类文件 342
18.6.3 执行类的实例化文件 342
18.7 网站主要模块开发 343
18.7.1 前台首页 343
18.7.2 登录模块设计 345
18.7.3 会员信息模块设计 353
18.7.4 商品展示模块设计 357
18.7.5 购物车模块设计 361
18.7.6 收银台模块设计 370
18.7.7 后台首页设计 372
18.8 开发技巧与难点分析 376
18.8.1 解决Ajax的乱码问题 376
18.8.2 使用JS脚本获取、输出标签内容 376
18.8.3 禁用页面缓存 376
18.8.4 在新窗口中使用session 377
18.8.5 判断上传文件格式 377
18.8.6 设置服务器的时间 377
18.9 发布网站 378
18.9.1 注册域名 378
18.9.2 申请空间 379
18.9.3 将域名解析到服务器 379
18.9.4 上传网站 379
第19章 课程设计——在线论坛 380
19.1 课程设计目的 380
19.2 功能描述 381
19.3 程序业务流程 381
19.4 数据库设计 382
19.4.1 数据库概要说明 382
19.4.2 数据库概念设计 382
19.4.3 数据库逻辑设计 383
19.5 实现过程 384
19.5.1 用户注册 384
19.5.2 用户登录 388
19.5.3 帖子分类管理设计 389
19.5.4 发帖模块设计 392
19.5.5 回帖模块设计 394
19.5.6 后台首页设计 396
19.5.7 栏目管理设计 398
19.6 调试运行 400
19.7 课程设计总结 402
第20章 课程设计——微博 403
20.1 课程设计目的 403
20.2 功能描述 404
20.3 总体设计 404
20.3.1 功能结构 404
20.3.2 系统预览 404
20.4 数据库设计 406
20.4.1 数据库设计 406
20.4.2 数据表设计 407
20.5 实现过程 408
20.5.1 用户登录设计 408
20.5.2 微博首页设计 410
20.5.3 发布微博设计 413
20.5.4 微博内容显示设计 415
20.5.5 微博评论设计 418
20.6 Ajax无刷新技术专题 420
20.6.1 Ajax概述 420
20.6.2 Ajax的优点 421
20.6.3 Ajax的工作原理 421
20.6.4 Ajax的工作流程 422
20.6.5 Ajax中的核心技术XMLHttpRequest 423
20.6.6 XMLHttpRequest对象的属性和方法 423
20.7 课程设计总结 426