第1篇 基础知识 3
第1章 初识PHP 3
1.1 PHP概述 4
1.1.1 什么是PHP 4
1.1.2 PHP语言的优势 4
1.1.3 PHP 5的新特性 5
1.1.4 PHP的发展趋势 5
1.1.5 PHP的应用领域 7
1.2 扩展库 7
1.3 如何学好PHP 10
1.4 学习资源 11
1.4.1 常用软件资源 11
1.4.2 常用网上资源 12
1.4.3 主要图书网站 12
1.5 网站建设的基本流程 13
1.6 小结 13
第2章 PHP环境搭建和开发工具 15
2.1 在Windows下使用AppServ组合包 16
2.2 在Windows下使用IIS+PHP+MySQL搭建PHP环境 18
2.2.1 安装PHP 5 19
2.2.2 安装配置IIS服务器 19
2.2.3 安装MySQL 22
2.3 在Linux下的安装配置 25
2.3.1 安装Apache服务器 25
2.3.2 安装MySQL数据库 26
2.3.3 安装PHP 5语言 27
2.4 PHP常用开发工具 28
2.4.1 Zend Studio 29
2.4.2 Dreamweaver 34
2.5 第一个PHP实例 35
2.6 小结 37
2.7 练习与实践 37
第3章 PHP语言基础 39
3.1 PHP标记风格 40
3.2 PHP注释的应用 41
3.3 PHP的数据类型 42
3.3.1 标量数据类型 42
3.3.2 复合数据类型 47
3.3.3 特殊数据类型 48
3.3.4 转换数据类型 49
3.3.5 检测数据类型 51
3.4 PHP常量 51
3.4.1 声明和使用常量 51
3.4.2 预定义常量 53
3.5 PHP变量 54
3.5.1 变量声明及使用 54
3.5.2 变量作用域 55
3.5.3 可变变量 57
3.5.4 PHP预定义变量 58
3.6 PHP运算符 59
3.6.1 算术运算符 59
3.6.2 字符串运算符 60
3.6.3 赋值运算符 61
3.6.4 位运算符 61
3.6.5 逻辑运算符 62
3.6.6 比较运算符 63
3.6.7 错误控制运算符 64
3.6.8 三元运算符 65
3.6.9 运算符的优先顺序和结合规则 65
3.7 PHP的表达式 66
3.8 PHP函数 66
3.8.1 定义和调用函数 67
3.8.2 在函数间传递参数 67
3.8.3 从函数中返回值 69
3.8.4 变量函数 70
3.8.5 对函数的引用 70
3.8.6 取消引用 71
3.9 PHP编码规范 72
3.9.1 什么是编码规范 72
3.9.2 PHP书写规则 72
3.9.3 PHP命名规则 73
3.10 小结 75
3.11 练习与实践 76
第4章 流程控制语句 77
4.1 条件控制语句 78
4.1.1 if语句 78
4.1.2 if...else语句 79
4.1.3 elseif语句 80
4.1.4 switch...case多重判断语句 82
4.2 循环控制语句 84
4.2.1 while循环语句 84
4.2.2 do...while循环语句 85
4.2.3 for循环语句 85
4.2.4 foreach循环语句 86
4.2.5 流程控制的另一种书写格式 88
4.2.6 使用break/continue语句跳出循环 89
4.3 小结 92
4.4 练习与实践 92
第5章 字符串操作 93
5.1 字符串简介 94
5.2 单引号和双引号的区别 94
5.3 字符串的连接符 95
5.4 字符串操作 96
5.4.1 去除字符串首尾空格和特殊字符 96
5.4.2 转义、还原字符串数据 98
5.4.3 获取字符串的长度 101
5.4.4 截取字符串 102
5.4.5 比较字符串 104
5.4.6 检索字符串 106
5.4.7 替换字符串 108
5.4.8 格式化字符串 111
5.4.9 分割字符串 111
5.4.10 合成字符串 113
5.5 小结 113
5.6 练习与实践 113
第6章 正则表达式 115
6.1 什么是正则表达式 116
6.2 正则表达式语法规则 116
6.2.1 行定位符(^和$) 117
6.2.2 单词定界符(\b、\B) 117
6.2.3 字符类([]) 117
6.2.4 选择字符(|) 118
6.2.5 连字符(-) 118
6.2.6 排除字符([^]) 119
6.2.7 限定符(?*+{n,m}) 119
6.2.8 点号字符(.) 120
6.2.9 转义字符(\) 120
6.2.10 反斜线(\) 120
6.2.11 括号字符(()) 121
6.2.12 反向引用 122
6.2.13 模式修饰符 122
6.3 POSIX扩展正则表达式函数 123
6.3.1 ereg()函数和eregi()函数 123
6.3.2 ereg_replace()函数和eregi_replace()函数 123
6.3.3 split()函数和spliti()函数 124
6.4 PCRE兼容正则表达式函数 124
6.4.1 preg_grep()函数 124
6.4.2 preg_match()函数和preg_match_all()函数 125
6.4.3 preg_quote()函数 126
6.4.4 preg_replace()函数 126
6.4.5 preg_replace_callback()函数 127
6.4.6 preg_split()函数 128
6.5 应用正则表达式对用户注册信息进行验证 128
6.6 小结 130
6.7 练习与实践 131
第7章 PHP数组 133
7.1 什么是数组 134
7.2 声明数组 134
7.3 数组的类型 136
7.3.1 数字索引数组 136
7.3.2 关联数组 136
7.4 输出数组 137
7.5 数组的构造 138
7.5.1 一维数组 138
7.5.2 二维数组 138
7.6 遍历数组 139
7.7 字符串与数组的转换 141
7.8 统计数组元素个数 143
7.9 查询数组中指定元素 144
7.10 获取数组中最后一个元素 146
7.11 向数组中添加元素 146
7.12 删除数组中重复元素 147
7.13 综合运用数组函数-实现多文件上传 148
7.14 小结 149
7.15 练习与实践 150
第8章 PHP与Web页面交互 151
8.1 表单 152
8.1.1 创建表单 152
8.1.2 表单元素 153
8.2 在普通的Web页中插入表单 156
8.3 获取表单数据的两种方法 158
8.3.1 使用POST方法提交表单 158
8.3.2 使用GET方法提交表单 159
8.4 PHP参数传递的常用方法 160
8.4.1 $_POST[]全局变量 160
8.4.2 $_GET[]全局变量 161
8.4.3 $_SESSION[]变量 161
8.5 在Web页中嵌入PHP脚本 162
8.5.1 在HTML标记中添加PHP脚本 162
8.5.2 对表单元素的value属性进行赋值 162
8.6 在PHP中获取表单数据 162
8.6.1 获取文本框、密码域、隐藏域、按钮、文本域的值 163
8.6.2 获取单选按钮的值 164
8.6.3 获取复选框的值 165
8.6.4 获取下拉列表框/菜单列表框的值 166
8.6.5 获取文件域的值 168
8.7 对URL传递的参数进行编/解码 169
8.7.1 对URL传递的参数进行编码 169
8.7.2 对URL传递的参数进行解码 170
8.8 PHP与Web表单的综合应用 171
8.9 小结 172
8.10 练习与实践 172
第9章 PHP与JavaScript交互 173
9.1 了解JavaScript 174
9.1.1 什么是JavaScript 174
9.1.2 JavaScript的功能 174
9.2 JavaScript语言基础 174
9.2.1 JavaScript数据类型 175
9.2.2 JavaScript变量 175
9.2.3 JavaScript注释 177
9.3 自定义函数 177
9.4 JavaScript流程控制语句 178
9.4.1 条件语句 178
9.4.2 循环语句 182
9.4.3 跳转语句 184
9.5 JavaScript事件 185
9.6 调用JavaScript脚本(JavaScript脚本嵌入方式) 186
9.6.1 在HTML中嵌入JavaScript脚本 186
9.6.2 应用JavaScript事件调用自定义函数 188
9.6.3 在PHP动态网页中引用JS文件 188
9.6.4 解决浏览器不支持JavaScript的问题 189
9.7 在PHP中调用JavaScript脚本 192
9.7.1 应用JavaScript脚本验证表单元素是否为空 192
9.7.2 应用JavaScript脚本制作二级导航菜单 193
9.7.3 应用JavaScript脚本控制文本域和复选框 195
9.8 小结 197
9.9 练习与实践 197
第10章 日期和时间 199
10.1 系统时区设置 200
10.1.1 时区划分 200
10.1.2 时区设置 200
10.2 PHP日期和时间函数 201
10.2.1 获得本地化时间戳 201
10.2.2 获取当前时间戳 202
10.2.3 获取当前日期和时间 202
10.2.4 获取日期信息 204
10.2.5 检验日期的有效性 205
10.2.6 输出格式化的日期和时间 205
10.2.7 显示本地化的日期和时间 207
10.2.8 将日期和时间解析为UNIX时间戳 210
10.3 日期和时间的应用 211
10.3.1 比较两个时间的大小 211
10.3.2 实现倒计时功能 212
10.3.3 计算页面脚本的运行时间 212
10.4 小结 214
10.5 练习与实践 214
第2篇 核心技术 217
第11章 Cookie与Session 217
11.1 Cookie管理 218
11.1.1 了解Cookie 218
11.1.2 创建Cookie 219
11.1.3 读取Cookie 220
11.1.4 删除Cookie 221
11.1.5 Cookie的生命周期 222
11.2 Session管理 222
11.2.1 了解Session 222
11.2.2 创建会话 223
11.2.3 Session设置时间 225
11.2.4 通过Session判断用户的操作权限 227
11.3 Session高级应用 230
11.3.1 Session临时文件 230
11.3.2 Session缓存 230
11.3.3 Session数据库存储 231
11.4 小结 234
11.5 练习与实践 235
第12章 图形图像处理技术 237
12.1 在PHP中加载GD库 238
12.2 Jpgraph的安装与配置 239
12.2.1 Jpgraph的安装 239
12.2.2 Jpgraph的配置 239
12.3 图形图像的典型应用 240
12.3.1 创建一个简单的图像 240
12.3.2 使用GD2函数在照片上添加文字 240
12.3.3 使用图像处理技术生成验证码 241
12.3.4 使用柱形图统计图书月销售量 243
12.3.5 使用折线图统计图书月销售额 244
12.3.6 使用3D饼形图统计各类商品的年销售额比率 246
12.4 小结 247
12.5 练习与实践 247
第13章 文件系统 249
13.1 文件处理 250
13.1.1 打开/关闭文件 250
13.1.2 读写文件 251
13.1.3 操作文件 256
13.2 目录处理 257
13.2.1 打开/关闭目录 257
13.2.2 浏览目录 258
13.2.3 操作目录 259
13.3 文件处理的高级应用 260
13.3.1 远程文件的访问 260
13.3.2 文件指针 260
13.3.3 锁定文件 262
13.4 文件上传 262
13.4.1 配置php.ini文件 263
13.4.2 预定义变量$_FILES 263
13.4.3 文件上传函数 264
13.4.4 多文件上传 265
13.5 小结 266
13.6 练习与实践 267
第14章 面向对象 269
14.1 面向对象的基本概念 270
14.1.1 类 270
14.1.2 对象 270
14.1.3 面向对象编程的三大特点 271
14.2 PHP与对象 271
14.2.1 类的定义 271
14.2.2 成员方法 272
14.2.3 类的实例化 273
14.2.4 成员变量 273
14.2.5 类常量 275
14.2.6 构造方法和析构方法 275
14.2.7 继承和多态的实现 278
14.2.8 “$this->”和“∷”的使用 281
14.2.9 数据隐藏 282
14.2.10 静态变量(方法) 284
14.3 PHP对象的高级应用 286
14.3.1 final关键字 286
14.3.2 抽象类 287
14.3.3 接口的使用 288
14.3.4 克隆对象 290
14.3.5 对象比较 291
14.3.6 对象类型检测 292
14.3.7 魔术方法(_) 293
14.4 面向对象的应用——中文字符串的截取类 297
14.5 小结 299
14.6 练习与实践 299
第15章 PHP加密技术 301
15.1 PHP加密函数 302
15.1.1 使用crypt()函数进行加密 302
15.1.2 使用md5()函数进行加密 304
15.1.3 使用shal()函数进行加密 305
15.2 PHP加密扩展库 306
15.2.1 Mcrypt扩展库 306
15.2.2 Mhash扩展库 309
15.3 小结 310
15.4 练习与实践 310
第16章 MySQL数据库基础 311
16.1 MySQL概述 312
16.2 启动、连接、断开和停止MySQL服务器 313
16.2.1 启动MySQL服务器 313
16.2.2 连接和断开MySQL服务器 314
16.2.3 停止MySQL服务器 315
16.3 MySQL数据库操作 316
16.3.1 创建数据库CREATE DATABASE 317
16.3.2 查看数据库SHOW DATABASES 317
16.3.3 选择数据库USE DATABASE 318
16.3.4 删除数据库DROP DATABASE 318
16.4 MySQL数据表操作 319
16.4.1 创建数据表CREATE TABLE 319
16.4.2 查看表结构SHOW COLUMNS或DESCRIBE 320
16.4.3 修改表结构ALTER TABLE 321
16.4.4 重命名表RENAME TABLE 322
16.4.5 删除表DROP TABLE 323
16.5 MySQL语句操作 323
16.5.1 插入记录insert 324
16.5.2 查询数据库记录select 324
16.5.3 修改记录update 326
16.5.4 删除记录delete 326
16.6 MySQL数据库备份和恢复 327
16.6.1 数据的备份 327
16.6.2 数据的恢复 328
16.7 小结 329
16.8 练习与实践 330
第17章 phpMyAdmin图形化管理工具 331
17.1 phpMyAdmin介绍 332
17.2 phpMyAdmin的使用 332
17.2.1 操作数据库 332
17.2.2 操作数据表 334
17.2.3 使用SQL语句操作数据表 335
17.2.4 管理数据记录 338
17.2.5 生成和执行mysql数据库脚本 339
17.3 小结 341
17.4 练习与实践 342
第18章 PHP操作MySQL数据库 343
18.1 PHP访问MySQL数据库的一般步骤 344
18.2 PHP操作MySQL数据库的方法 345
18.2.1 使用mysql_connect()函数连接MySQL服务器 346
18.2.2 使用mysql_select_db()函数选择数据库文件 347
18.2.3 使用mysql_query()函数执行SQL语句 348
18.2.4 使用mysql_fetch_array()函数从数组结果集中获取信息 349
18.2.5 使用mysql_fetch_object()函数从结果集中获取一行作为对象 351
18.2.6 使用mysql_fetch_row()函数逐行获取结果集中的每条记录 353
18.2.7 使用mysql_num_rows()函数获取查询结果集中的记录数 354
18.3 PHP操作MySQL数据库 355
18.3.1 使用insert语句动态添加公告信息 356
18.3.2 使用select语句查询公告信息 358
18.3.3 使用update语句动态编辑公告信息 360
18.3.4 使用delete语句动态删除公告信息 362
18.3.5 分页显示公告信息 363
18.3.6 将数据库连接、操作、分页和字符串截取的方法封装到类中 365
18.4 小结 370
18.5 练习与实践 370
第19章 ADODB类库 371
19.1 ADODB概述 372
19.2 使用ADODB操作MySQL 373
19.3 ADODB类库 374
19.3.1 连接数据库的函数和方法 374
19.3.2 定义结果集的存取方式 376
19.3.3 执行SQL语句 377
19.3.4 控制结果集函数 382
19.3.5 生成HTML表格函数 383
19.3.6 分页功能函数 384
19.3.7 错误处理及调试 385
19.4 ADODB类库应用 386
19.4.1 ADODB连接、操作数据库类 386
19.4.2 ADODB分页类 388
19.5 小结 391
19.6 练习与实践 391
第20章 Zend Framework框架 393
20.1 Zend Framework概述 394
20.2 Zend Framework环境搭建 394
20.2.1 环境配置 394
20.2.2 框架结构 396
20.2.3 小试牛刀(Zend Framework框架初始搭建) 396
20.3 Zend Framework中的常用组件 401
20.3.1 Zend_Auth认证 401
20.3.2 Zend_Db数据库操作 405
20.3.3 Zend_Cache精细缓存 411
20.3.4 Zend_Layout站点布局 414
20.3.5 Zend_Paginator数据分页 416
20.3.6 Zend_Mail发送邮件 420
20.4 小结 424
20.5 练习与实践 425
第3篇 高级应用 429
第21章 Smarty模板技术 429
21.1 Smarty简介 430
21.1.1 什么是Smarty 430
21.1.2 Smarty与MVC 430
21.1.3 Smarty特点 430
21.2 Smarty的安装配置 431
21.2.1 Smarty下载和安装 431
21.2.2 第一个Smarty程序 431
21.2.3 Smarty配置 433
21.3 Smarty模板设计 435
21.3.1 Smarty模板文件 435
21.3.2 注释 435
21.3.3 变量 435
21.3.4 修饰变量 438
21.3.5 流程控制 440
2 1.4 Smarty程序设计 443
21.4.1 Smarty中的常用方法 443
21.4.2 Smarty的配置变量 445
21.5 Smarty模板的应用 445
21.5.1 将Smarty的配置方法封装到类中 445
21.5.2 Smarty+ADODB整合应用 447
21.6 小结 449
21.7 练习与实践 450
第22章 PHP与XML技术 451
视频讲解:29分钟 452
22.1 XML的概述 452
22.2 XML语法 452
22.2.1 XML文档结构 452
22.2.2 XML声明 453
22.2.3 处理指令 453
22.2.4 注释 453
22.2.5 XML元素 454
22.2.6 XML属性 454
22.2.7 使用CDATA标记 454
22.2.8 XML命名空间 455
22.3 在PHP中创建XML文档 456
22.4 SimpleXML 456
22.4.1 创建SimpleXML对象 457
22.4.2 遍历所有子元素 458
22.4.3 遍历所有属性 459
22.4.4 访问特定节点元素和属性 460
22.4.5 修改XML数据 460
22.4.6 保存XML文档 462
22.5 动态创建XML文档 463
22.6 小结 464
22.7 练习与实践 464
第23章 PHP与Ajax技术 465
23.1 Ajax概述 466
23.1.1 什么是Ajax 466
23.1.2 Ajax的开发模式 466
23.1.3 Ajax的优点 467
23.2 Ajax使用的技术 467
23.2.1 JavaScript脚本语言 467
23.2.2 XMLHttpRequest 467
23.2.3 XML语言 470
23.2.4 DOM 470
23.2.5 CSS 470
23.3 Ajax开发需要注意的几个问题 471
23.4 在PHP中应用Ajax技术的典型应用 472
23.4.1 在PHP中应用Ajax技术检测用户名 472
23.4.2 在PHP中应用Ajax技术实现博客文章类别添加 474
23.5 小结 478
23.6 练习与实践 478
第4篇 项目实战 481
第24章 应用Smarty模板开发电子商务网站 481
24.1 系统分析 482
24.1.1 需求分析 482
24.1.2 编写项目计划书 482
24.2 系统设计 486
24.2.1 系统目标 486
24.2.2 系统功能结构 486
24.2.3 系统流程图 487
24.3 软件开发环境 488
24.4 数据库与数据表的设计 488
24.4.1 数据库分析 488
24.4.2 创建数据库和数据表 490
24.5 搭建系统框架 493
24.6 公共文件设计 494
24.6.1 数据库连接、管理和分页类文件 494
24.6.2 Smarty模板配置类文件 497
24.6.3 执行类的实例化文件 497
24.6.4 表单样式文件 498
24.7 前台首页设计 499
24.7.1 创建PHP页 500
24.7.2 创建模板页 501
24.8 登录模块设计 502
24.8.1 用户注册 502
24.8.2 用户登录 508
24.8.3 找回密码 511
24.9 会员信息模块设计 516
24.9.1 会员中心 516
24.9.2 安全退出 519
24.10 商品显示模块 520
24.10.1 创建PHP页 520
24.10.2 创建模板页 521
24.10.3 js脚本页面 522
24.11 购物车模块设计 522
24.11.1 添加商品 523
24.11.2 显示购物车 525
24.11.3 更改商品数量 527
24.11.4 删除商品 528
24.11.5 保存购物车 530
24.12 收银台模块设计 532
24.12.1 显示订单 533
24.12.2 填写订单 534
24.12.3 处理订单 535
24.12.4 反馈订单 537
24.12.5 查询订单 538
24.13 后台首页设计 541
24.13.1 后台首页布局 542
24.13.2 DIV+JavaScript+CSS实现树形菜单 542
24.14 类别管理模块设计 544
24.14.1 添加类别 544
24.14.2 查看类别 547
24.15 订单管理模块设计 551
24.16 开发常见问题与解决 554
24.16.1 解决Ajax的乱码问题 554
24.16.2 使用JS脚本获取、输出标签内容 554
24.16.3 使用浮动框架做关联菜单 555
24.16.4 禁用页面缓存 555
24.16.5 在新窗口中使用session 555
24.16.6 防止站外链接 556
24.16.7 判断上传文件格式 556
24.16.8 打开Smarty缓存文件 557
24.17 发布网站 557
24.17.1 注册域名 557
24.17.2 申请空间 558
24.17.3 将域名解析到服务器 558
24.17.4 上传网站 558
24.18 小结 559