第1部分 基础篇 3
第1堂课 PHP概述 3
1.1怎样学好PHP 4
1.1.1什么是PHP 4
1.1.2 PHP的优势 4
1.1.3如何学好编程 6
1.1.4下载PHP及相关软件 7
1.1.5代码编辑工具 8
1.1.6下载PHP用户手册 9
1.2环境的搭建 9
1.2.1 AppServ Windows版PHP集成化安装包 9
1.2.2 XAMPP——Linux版PHP集成化安装包 11
1.3 PHP开发环境的关键配置信息 13
1.3.1 Apache服务器的基本配置 13
1.3.2 php.ini文件的基本配置 13
1.4解决PHP的常见配置问题 14
1.4.1解决Apache服务器端口冲突 15
1.4.2设置PHP的系统当前时间 15
1.4.3增加PHP扩展模块 15
1.5照猫画虎——基本功训练 15
1.5.1基本功训练1——测试PHP环境是否搭建成功 15
1.5.2基本功训练2——第一次登录phpMyAdmin图形化管理工具 16
1.5.3基本功训练3——浏览PHP环境配置说明 16
1.5.4基本功训练4——解析PHP环境搭建的四大目录 17
1.5.5基本功训练5——编辑第一个PHP程序 18
1.6情景应用——拓展与实践 19
1.6.1情景应用1——输出系统的当前时间 19
1.6.2情景应用2——输出“明日科技欢迎您!” 20
1.6.3情景应用3——输出一个漂亮的图片 20
1.6.4情景应用4——更改Apache服务器的端口号为82 21
1.6.5情景应用5——Apache端口号修改后运行第一个PHP程序 21
1.7自我测试 22
1.8行动指南 23
1.9成功可以复制——PHP开山鼻祖Rasmus Lerdorf 24
第2堂课 PHP基础 25
2.1 PHP工作原理 26
2.2 PHP标记 27
2.3代码注释 27
2.3.1使用PHP注释 27
2.3.2有效使用注释 28
2.4 PHP常量 29
2.4.1声明和使用常量 29
2.4.2预定义常量 30
2.5 PHP变量 31
2.5.1声明变量 31
2.5.2变量作用域 33
2.5.3可变变量 35
2.6 PHP数据类型 35
2.6.1标量数据类型 35
2.6.2复合数据类型 38
2.6.3特殊数据类型 39
2.6.4转换数据类型 39
2.6.5检测数据类型 40
2.7 PHP的运算符 41
2.7.1算术运算符 41
2.7.2字符串运算符 42
2.7.3赋值运算符 42
2.7.4位运算符 43
2.7.5递增或递减运算符 43
2.7.6逻辑运算符 44
2.7.7比较运算符 45
2.7.8三元运算符 46
2.7.9运算符的使用规则 46
2.8照猫画虎——基本功训练 47
2.8.1基本功训练1——获取当前执行文件名称 47
2.8.2基本功训练2——加法计算器 48
2.8.3基本功训练3——输出姚明的个人信息 48
2.8.4基本功训练4——比较某一天的产品销量 49
2.8.5基本功训练5——根据工资多少判断购物地点 50
2.9情景应用——拓展与实践 50
2.9.1情景应用1——在留言板中输出系统当前时间 50
2.9.2情景应用2——根据奇偶天数安排工作任务 51
2.9.3情景应用3——计算长方形的面积 52
2.9.4情景应用4——检测变量是否为整型 52
2.9.5情景应用5——通过数据递增运算统计网站访问量 53
2.9.6情景应用6——输出学生的考试成绩 54
2.10自我测试 54
2.11行动指南 55
2.12成功可以复制——杀毒王王江民 56
第3堂课 PHP函数 59
3.1 PHP函数介绍 60
3.1.1定义和调用函数 60
3.1.2在函数间传递参数 60
3.1.3从函数中返回值 62
3.1.4变量函数 62
3.1.5对函数的引用 63
3.1.6取消引用 63
3.2 PHP变量函数库 64
3.3 PHP字符串函数库 65
3.4 PHP日期时间函数库 66
3.5 PHP数学函数库 67
3.6 PHP文件系统函数库 68
3.7 MySQL函数库 70
3.8照猫画虎——基本功训练 71
3.8.1基本功训练1——判断用户提交用户名是否为空 71
3.8.2基本功训练2——打印输出员工的个人信息 72
3.8.3基本功训练3——输出公司的企业文化 72
3.8.4基本功训练4——计算密码长度 73
3.8.5基本功训练5——验证输入时间是否有效 73
3.8.6基本功训练6——获取商品销量的最高值 74
3.8.7基本功训练7——读取文本文件中的数据 75
3.9情景应用——拓展与实践 76
3.9.1情景应用1——控制帖子标题的输出长度 76
3.9.2情景应用2——去除用户填写注册信息中的空格 77
3.9.3情景应用3——对关键字进行描红 78
3.9.4情景应用4——网页闹钟 79
3.9.5情景应用5——幸运数字抽奖 80
3.9.6情景应用6——数字验证码 80
3.9.7情景应用7——文本文件统计网站访问量 81
3.9.8情景应用8——购物车中商品的输出 83
3.9.9情景应用9——中文图像验证码 83
3.10自我测试 84
3.11行动指南 85
3.12成功可以复制——缔造华人的硅谷传奇杨致远 86
第4堂课 PHP流程控制语句 89
4.1程序的3种控制结构 90
4.1.1顺序结构 90
4.1.2选择(分支)结构 90
4.1.3循环结构 91
4.2条件控制语句 91
4.2.1 if条件控制语句 92
4.2.2 switch多分支语句 93
4.3循环控制语句 95
4.3.1 while循环语句 95
4.3.2 do…while循环语句 96
4.3.3 for循环语句 97
4.3.4 foreach循环语句 98
4.4跳转语句 100
4.4.1 break跳转语句 100
4.4.2 continue跳转语句 101
4.5包含语句 102
4.5.1 include()语句 103
4.5.2 require()语句 103
4.5.3 include_once()语句 104
4.5.4 require_once()语句 105
4.5.5 include()语句和require()语句的区别 106
4.6照猫画虎——基本功训练 107
4.6.1基本功训练1——对与错的判断 107
4.6.2基本功训练2——for语句计算阶乘 107
4.6.3基本功训练3——if语句判断闰年 108
4.6.4基本功训练4——用switch语句计算商品的折扣价格 108
4.6.5基本功训练5——向一个循环语句中发布终止指令 109
4.7情景应用——拓展与实践 110
4.7.1情景应用1——使用if语句判断美女征婚条件 110
4.7.2情景应用2——使用switch语句定制网页每日问候语 112
4.7.3情景应用3——使用while语句循环读取数组中数据 113
4.7.4情景应用4——switch网页框架 114
4.7.5情景应用5——使用for循环语句实现多图片上传 115
4.8自我测试 116
4.9行动指南 118
4.10成功可以复制——BEA创始人之一庄思浩 119
第5堂课 PHP数组应用 121
5.1数组概述 122
5.2数组类型 122
5.3声明数组 123
5.3.1用户创建数组 123
5.3.2函数创建数组 124
5.3.3创建二维数组 124
5.4遍历、输出数组 125
5.4.1遍历数组 125
5.4.2输出数组元素 128
5.5 PHP数组函数 128
5.5.1统计数组元素个数 128
5.5.2向数组中添加元素 129
5.5.3获取数组中最后一个元素 129
5.5.4删除数组中重复元素 129
5.5.5获取数组中指定元素的键名 130
5.6 PHP全局数组 131
5.6.1 $_SERVER[]全局数组 131
5.6.2 $_GET[]和$_POST[]全局数组 132
5.6.3 $_COOKIE全局数组 133
5.6.4 $_ENV[]全局数组 133
5.6.5 $_REQUEST[]全局数组 133
5.6.6 $_SESSION[]全局数组 134
5.6.7 $_FILES[]全局数组 134
5.7照猫画虎——基本功训练 134
5.7.1基本功训练1——输出数组中元素值 134
5.7.2基本功训练2——遍历数组 135
5.7.3基本功训练3——foreach语句遍历数组 135
5.7.4基本功训练4——将数组元素转换成字符串 136
5.7.5基本功训练5——去除数组中重复的元素 136
5.7.6基本功训练6——向数组中添加元素 137
5.7.7基本功训练7——获取服务器端的IP地址 137
5.8情景应用——拓展与实践 138
5.8.1情景应用1——字符串数组排序 138
5.8.2情景应用2——获取用户注册信息 139
5.8.3情景应用3——获取上传文件的数据 140
5.8.4情景应用4——生成在线考试题 140
5.8.5情景应用5——通过客户端IP地址限制投票次数 141
5.9自我测试 142
5.10行动指南 143
5.11成功可以复制——迅雷创始人邹胜龙 144
第6堂课 PHP与Web页面交互 147
6.1表单概述 148
6.1.1创建表单 148
6.1.2添加表单元素 148
6.1.3定义表单数据提交方法 152
6.2获取表单提交的数据 154
6.2.1 $_GET[]获取表单提交数据 154
6.2.2 $_POST[]获取表单提交数据 154
6.3获取超链接传递的数据 155
6.3.1通过超链接传递数据 156
6.3.2通过$GET[]获取超级链接传递的数据 156
6.3.3对超链接传递的数据进行编码、解码 157
6.4了解JavaScript脚本 158
6.4.1 JavaScript语言基础 158
6.4.2通过JavaScript脚本自定义函数 160
6.4.3 JavaScript脚本嵌入方式 161
6.4.4 JavaScript常用事件 166
6.5照猫画虎——基本功训练 167
6.5.1基本功训练1——设计一个用户登录表单 167
6.5.2基本功训练2——验证用户名和密码不能为空 168
6.5.3基本功训练3——输出用户登录信息 169
6.5.4基本功训练4——验证email地址格式是否正确 171
6.5.5基本功训练5——验证用户两次输入的密码是否一致 172
6.6情景应用——拓展与实践 173
6.6.1情景应用1——开发一个用户注册表单 173
6.6.2情景应用2——验证用户注册信息是否合理 174
6.6.3情景应用3——限制多行文本域输入的字符个数 176
6.6.4情景应用4——设置文本框的只读属性 178
6.6.5情景应用5——对超链接传递的数据进行编码 179
6.7自我测试 179
6.8行动指南 180
6.9成功可以复制——软件业的华人教父王嘉廉 181
第7堂课 MySQL数据库技术 183
7.1 MySQL概述 184
7.1.1 MySQL的特点 184
7.1.2 SQL和MySQL 184
7.2 MySQL服务器的启动和关闭 185
7.2.1启动MySQL服务器 185
7.2.2连接MySQL服务器 186
7.2.3关闭MySQL服务器 187
7.3操作MySQL数据库 187
7.3.1创建新数据库 187
7.3.2选择指定数据库 188
7.3.3删除指定数据库 188
7.4操作MySQL数据表 189
7.4.1创建一个表 189
7.4.2查看数据表结构 190
7.4.3修改数据表结构 191
7.4.4重命名数据表 192
7.4.5删除指定数据表 192
7.5操作MySQL数据 193
7.5.1向数据表中添加数据 193
7.5.2更新数据表中数据 193
7.5.3删除数据表中数据 194
7.5.4查询数据表中数据 194
7.6 MySQL数据类型 197
7.6.1数字类型 197
7.6.2字符串类型 198
7.6.3日期和时间数据类型 199
7.7 phpMyAdmin管理MySQL数据库 200
7.7.1管理数据库 200
7.7.2管理数据表 201
7.7.3管理数据记录 203
7.7.4导入导出数据 206
7.8照猫画虎——基本功训练 208
7.8.1基本功训练1——创建db_book图书数据库 208
7.8.2基本功训练2——在db_book数据库中创建图书信息表tb_mrbook 208
7.8.3基本功训练3——向tb_mrbook表中添加数据 209
7.8.4基本功训练4——修改tb_mrbook表中的数据 210
7.8.5基本功训练5——删除tb_mrbook表中指定数据 210
7.9情景应用——拓展与实践 211
7.9.1情景应用1——通过命令模式备份和恢复数据库 211
7.9.2情景应用2——MySQL的存储过程 213
7.9.3情景应用3——使用phpMyAdmin设置编码格式 214
7.9.4情景应用4——通过phpMyAdmin添加服务器新用户 215
7.9.5情景应用5——在phpMyAdmin中重置MySQL服务器登录密码 216
7.10自我测试 217
7.11行动指南 218
7.12成功可以复制——图文世界的缔造者约翰·沃洛克 219
第8堂课 PHP数据库编程技术 221
8.1 PHP操作MySQL数据库的步骤 222
8.2 PHP操作MySQL数据库的方法 222
8.2.1 mysql_connect()函数连接MySQL服务器 222
8.2.2 mysql_select_db()函数选择MySQL数据库 223
8.2.3 mysql_query()函数执行SQL语句 223
8.2.4 mysql_fetch_array()函数将结果集返回到数组中 224
8.2.5 mysql_fetch_row()函数从结果集中获取一行作为枚举数组 225
8.2.6 mysql_num_rows()函数获取查询结果集中的记录数 226
8.2.7 mysql_free_result()函数释放内存 227
8.2.8 mysql_close()函数关闭连接 227
8.3管理MySQL数据库中的数据 228
8.3.1向数据库中添加数据 228
8.3.2浏览数据库中的数据 229
8.3.3编辑数据库中的数据 230
8.3.4从数据库中删除数据 231
8.3.5批量数据操作 233
8.4照猫画虎——基本功训练 234
8.4.1基本功训练1——连接db_database08数据库 234
8.4.2基本功训练2——查询图书信息表中的前3条记录 235
8.4.3基本功训练3——对查询结果进行降序排列输出 236
8.4.4基本功训练4——更新指定图书的信息 237
8.4.5基本功训练5——删除指定的用户信息 239
8.5情景应用——拓展与实践 240
8.5.1情景应用1——用户注册模块 240
8.5.2情景应用2——用户登录模块 242
8.5.3情景应用3——浏览注册用户信息 242
8.5.4情景应用4——查询注册用户 243
8.5.5情景应用5——修改指定用户的注册信息 244
8.5.6情景应用6——分页浏览用户注册信息 246
8.6自我测试 247
8.7行动指南 248
8.8成功可以复制——射击游戏之父约翰·卡马克 249
第2部分 提高篇 253
第9堂课 Cookie与会话控制 253
9.1会话的操作 254
9.1.1创建会话 254
9.1.2配置PHP的会话 256
9.2会话的高级应用 257
9.2.1 SESSION临时文件 257
9.2.2 SESSION缓存 258
9.2.3 SESSION数据库存储 259
9.3 Cookie的操作 259
9.3.1创建Cookie 260
9.3.2访问Cookie 261
9.3.3删除Cookie 261
9.4 照猫画虎——基本功训练 262
9.4.1基本功训练1——初始化SESSION变量 262
9.4.2基本功训练2——通过SESSION变量在页面间传递数据 262
9.4.3基本功训练3——通过SESSION变量判断页面的访问权限 263
9.4.4基本功训练4——Cookie控制网页访问时间 264
9.4.5基本功训练5——通过Cookie保存用户登录信息 265
9.5情景应用——拓展与实践 266
9.5.1情景应用1——对SESSION变量编码和解码 266
9.5.2情景应用2——通过SESSION变量屏蔽刷新页面对计数器的影响 267
9.5.3情景应用3——通过Cookie计算在线考试答题时间 268
9.5.4情景应用4——Cookie自动登录 269
9.5.5情景应用5——通过SESSION控制页面的背景色 270
9.6自我测试 271
9.7行动指南 272
9.8成功可以复制——微型博客创始人埃文·威廉姆斯 273
第10堂课 字符串高级处理技术 275
10.1初识字符串 276
10.2转义、还原字符串 276
10.3截取字符串 277
10.4分割、合成字符串 278
10.5替换字符串 279
10.5.1 str_ireplace()函数 279
10.5.2 substr_replace()函数 280
10.6检索字符串 281
10.6.1 strstr()函数 281
10.6.2 substr_count()函数 281
10.7去掉字符串首尾空格和特殊字符 282
10.7.1 ltrim()函数 282
10.7.2 rtrim()函数 283
10.7.3 trim()函数 283
10.8字符串与HTML转换 284
10.9正则表达式 284
10.9.1什么是正则表达式 284
10.9.2正则表达式语法规则 285
10.10 PCRE兼容正则表达式函数 286
10.10.1字符串的匹配与查找 286
10.10.2字符串的替换 287
10.10.3字符串的分割 288
10.11照猫画虎——基本功训练 289
10.11.1基本功训练1——在网页中直接输出HTML脚本 289
10.11.2基本功训练2——substr()函数截取超长字符串 289
10.11.3基本功训练3——统一英文注册用户首字母的大小写 290
10.11.4基本功训练4——货币数据的格式化输出 291
10.11.5基本功训练5——验证email地址格式是否正确 291
10.11.6基本功训练6——实现字符串的替换 292
10.12情景应用——拓展与实践 293
10.12.1情景应用1——在论坛的帖子对PHP脚本进行转换输出 293
10.12.2情景应用2——以省略模式输出论坛中最新动态标题 293
10.12.3情景应用3——对查询的关键字进行描红、加粗 294
10.12.4情景应用4——通过字符串截取控制图像验证码的输出 295
10.12.5情景应用5——验证上传文件的格式是否正确 296
10.12.6情景应用6——验证用户提交的数据是否是整数 296
10.13自我测试 297
10.14行动指南 298
10.15成功可以复制——善于抓住时机的人徐少春 299
第11堂课 日期和时间的处理技术 301
11.1 PHP的时间观念 302
11.1.1在php.ini文件中设置时区 302
11.1.2通过date_default_timezone_set函数设置时区 302
11.2 UNIX时间戳 302
11.2.1获取任意日期、时间的时间戳 303
11.2.2获取当前时间戳 303
11.2.3日期、时间转换为UNIX时间戳 304
11.3日期和时间的处理 304
11.3.1格式化日期和时间 305
11.3.2获取日期和时间信息 306
11.3.3检验日期和时间的有效性 307
11.4照猫画虎——基本功训练 308
11.4.1基本功训练1——获取指定时间的UNIX时间戳 308
11.4.2基本功训练2——获取系统当前时间的时间戳 308
11.4.3基本功训练3——输出系统当前时间 309
11.4.4基本功训练4——倒计时 309
11.4.5基本功训练5——获取本地时间 310
11.5情景应用——拓展与实践 310
11.5.1情景应用1——比较两个时间的大小 310
11.5.2情景应用2——网页闹钟 311
11.5.3情景应用3——计算程序的运行时间 311
11.5.4情景应用4——输出中文格式的日期和时间 312
11.5.5情景应用5——检验日期和时间的有效性 312
11.6自我测试 313
11.7行动指南 314
11.8成功可以复制——C#语言之父安德斯·海尔斯伯格 315
第12堂课 图形图像处理技术 317
12.1了解GD2函数库 318
12.2设置GD2函数库 318
12.3学习常用图像处理技术 318
12.3.1创建画布 319
12.3.2颜色处理 319
12.3.3绘制文字 320
12.3.4输出图像 322
12.3.5销毁图像 323
12.4运用Jpgraph类库绘制图像 323
12.4.1 Jpgraph类库简介 323
12.4.2 Jpgraph的安装 323
12.4.3 Jpgraph创建3D饼形图展示部门业绩比较 324
12.5照猫画虎——基本功训练 325
12.5.1基本功训练1——绘制一个正方形 325
12.5.2基本功训练2——在画布中输出一行英文字符串 326
12.5.3基本功训练3——在背景图像上输出北京欢迎您 326
12.5.4基本功训练4——在照片上书写文字 327
12.5.5基本功训练5——Jpgraph创建折线图分析图书销售走势 328
12.6情景应用——拓展与实践 329
12.6.1情景应用1——GD2函数生成图像验证码 329
12.6.2情景应用2——通过图像显示密码安全强度 330
12.6.3情景应用3——通过柱状图展示2010年第一季度编程词典销量 331
12.6.4情景应用4——通过折线图分析2010年公司销售额 333
12.6.5情景应用5——通过饼形图区块分析2010年图书销量 334
12.6.6情景应用6——制作生活画册 334
12.7自我测试 336
12.8行动指南 337
12.9成功可以复制——因特网的点火人马克·安德森 338
第13堂课 文件目录处理技术 341
13.1基本的文件处理技术 342
13.1.1打开一个文件 342
13.1.2读取文件内容 344
13.1.3向文件中写入数据 347
13.1.4关闭文件指针 349
13.2目录操作技术 349
13.2.1打开指定目录 349
13.2.2读取目录结构 349
13.2.3关闭目录指针 350
13.3文件的上传技术 350
13.3.1开启文件上传功能 351
13.3.2全局变量$_FILES应用 351
13.3.3将上传文件移动到指定目录 353
13.3.4文件下载技术 354
13.4照猫画虎——基本功训练 355
13.4.1基本功训练1——通过文本文件统计网站访问量 355
13.4.2基本功训练2——读取文本文件中存储的用户注册协议 356
13.4.3基本功训练3——通过文本文件存储网站访问记录 356
13.4.4基本功训练4——验证指定的目录是否存在 357
13.4.5基本功训练5——控制上传文件的大小和格式 358
13.5情景应用——拓展与实践 359
13.5.1情景应用1——规范化的文件上传 359
13.5.2情景应用2——规范化的多文件上传 360
13.5.3情景应用3——header()函数执行文件下载 361
13.5.4情景应用4——文本文件的分页输出 362
13.5.5情景应用5——将数据以二进制格式上传到数据库 364
13.6自我测试 365
13.7行动指南 366
13.8成功可以复制——知识改变命运、科技改变生活李彦宏 367
第3部分 高级篇 371
第14堂课 面向对象的程序设计 371
14.1一切皆是对象 372
14.1.1什么是类 372
14.1.2对象的由来 372
14.1.3面向对象的特点 373
14.2类的声明 373
14.2.1类的定义 373
14.2.2成员属性 374
14.2.3成员方法 375
14.3类的实例化 375
14.3.1创建对象 375
14.3.2访问类中成员 376
14.3.3特殊的访问方法——“$this”和“::” 377
14.3.4构造方法和析构方法 378
14.4面向对象的封装特性 379
14.4.1 public(公共成员) 379
14.4.2 private(私有成员) 380
14.4.3 protected(保护成员) 380
14.5面向对象的继承特性 381
14.5.1类的继承——extends关键字 381
14.5.2类的继承——parent::关键字 382
14.5.3覆盖父类方法 383
14.6抽象类和接口 384
14.6.1抽象类 384
14.6.2接口 385
14.7面向对象的多态性 387
14.7.1通过继承实现多态 387
14.7.2通过接口实现多态 388
14.8面向对象的关键字 388
14.8.1 final关键字 388
14.8.2 static关键字——声明静态类成员 389
14.8.3 clone关键字——克隆对象 390
14.9面向对象的魔术方法 391
14.9.1_set()和_get()方法 391
14.9.2_isset()和_unset()方法 391
14.9.3_call()方法 392
14.9.4_toStfng()方法 392
14.9.5_autoload()方法 393
14.10照猫画虎——基本功训练 394
14.10.1基本功训练1——编写一个矩形类 394
14.10.2基本功训练2——用构造方法初始化 395
14.10.3基本功训练3——this关键字的用途 395
14.10.4基本功训练4——方法参数传递 396
14.10.5基本功训练5——方法的覆盖 397
14.11情景应用——拓展与实践 397
14.11.1情景应用1——数据统计类中定义求数值平方的方法 397
14.11.2情景应用2——封装一个数据库连接类 399
14.11.3情景应用3——封装一个数据库操作类 400
14.11.4情景应用4——封装分页类 401
14.11.5情景应用5——封装特殊字符转义类 402
14.12自我测试 403
14.13行动指南 404
14.14成功可以复制——中国通信设备行业的领跑者任正非 405
第15堂课 PHP与XML技术 407
15.1 XML的概述 408
15.2 XML语法 408
15.2.1 XML文档结构 408
15.2.2 XML声明 408
15.2.3处理指令 409
15.2.4注释 409
15.2.5 XML元素 409
15.2.6 XML属性 410
15.2.7使用CDATA标记 410
15.2.8 XML命名空间 411
15.3 SimpleXML系列函数操作XML 411
15.3.1创建SimpleXML对象 411
15.3.2遍历所有子元素 412
15.3.3遍历所有属性 413
15.3.4访问特定节点元素和属性 414
15.3.5修改XML数据 414
15.3.6保存XML文档 415
15.4 RSS阅读器 416
15.4.1 RSS概述 416
15.4.2 RSS 2.0的标准 417
15.4.3创建支持RSS阅读的站点 419
15.5照猫画虎——基本功训练 422
15.5.1基本功训练1——动态创建XML文档 422
15.5.2基本功训练2——动态读取XML文档 424
15.5.3基本功训练3——通过XPath查询XML中的数据 426
15.5.4基本功训练4——动态更新XML中的数据 428
15.5.5基本功训练5——动态删除XML中的数据 430
15.6情景应用——拓展与实践 432
15.6.1情景应用1——创建RSS阅读器的框架 432
15.6.2情景应用2——树状导航菜单输出频道组和频道 434
15.6.3情景应用3——Ajax无刷新读取订阅信息 435
15.6.4情景应用4——添加频道组 437
15.6.5情景应用5——添加频道 438
15.7自我测试 441
15.8行动指南 441
15.9成功可以复制——中国网络游戏产业的领军人陈天桥 442
第16堂课 PDO数据库抽象层 445
16.1什么是PDO 446
16.1.1 PDO概述 446
16.1.2 PDO特点 446
16.1.3安装PDO 446
16.2 PDO连接数据库 447
16.2.1 PDO构造函数 447
16.2.2 DSN详解 447
16.3 PDO中执行SQL语句 448
16.3.1 exec()方法 448
16.3.2 query()方法 448
16.3.3预处理语句——prepare()和execute() 448
16.4 PDO中获取结果集 449
16.4.1 fetch()方法 449
16.4.2 fetchAll()方法 450
16.4.3 fetchColumn()方法 451
16.5 PDO中捕获SQL语句中的错误 453
16.5.1使用默认模式——PDO::ERRMODE_SILENT 453
16.5.2使用警告模式——PDO::ERRMODE_WARNING 454
16.5.3使用异常模式——PDO::ERRMODE_EXCEPTION 455
16.6 PDO中错误处理 456
16.6.1 errorCode()方法 456
16.6.2 errorInfo()方法 457
16.7 PDO中事务处理 459
16.8 PDO中存储过程 460
16.9照猫画虎——基本功训练 461
16.9.1基本功训练1——连接MySQL数据库 461
16.9.2基本功训练2——通过PDO向数据库中添加数据 462
16.9.3基本功训练3——通过PDO浏览数据库中数据 463
16.9.4基本功训练4——通过PDO更新数据库中数据 464
16.9.5基本功训练5——连接MS SQL Server数据库 466
16.10情景应用——拓展与实践 467
16.10.1情景应用1——明日书店会员注册 467
16.10.2情景应用2——明日书店会员登录 468
16.10.3情景应用3——添加留言信息 469
16.10.4情景应用4——浏览客户留言 470
16.10.5情景应用5——查询留言内容 471
16.11自我测试 472
16.12行动指南 473
16.13成功可以复制——中国第一程序员求伯君 474
第17堂课 Smarty模板技术 477
17.1 Smarty模板引擎 478
17.1.1 Smarty模板引擎下载 478
17.1.2 Smarty模板引擎安装 479
17.1.3 Smarty模板引擎配置 479
17.1.4走进Smarty模板引擎 481
17.2 Smarty模板设计——静态页处理 482
17.2.1基本语法(注释、函数和属性) 482
17.2.2 Smarty模板设计变量 483
17.2.3变量调节器 484
17.2.4内建函数(动态文件、模板文件的包含和流程控制语句) 485
17.2.5自定义函数 487
17.2.6配置文件 487
17.3 Smarty程序设计——动态文件操作 489
17.3.1 SMARTY_PATH常量 489
17.3.2 Smarty程序设计变量 489
17.3.3 Smarty方法 489
17.3.4 Smarty缓存 490
17.4照猫画虎——基本功训练 492
17.4.1基本功训练1——封装Smarty模板的配置方法 492
17.4.2基本功训练2——Smarty模板中的页面设计 493
17.4.3基本功训练3——if语句判断当前用户权限 494
17.4.4基本功训练4——Smarty模板中日期、时间的格式化输出 496
17.4.5基本功训练5——register_object方法注册模板对象 496
17.5情景应用——拓展与实践 498
17.5.1情景应用1——Smarty模板中的truncate方法截取字符串 498
17.5.2情景应用2——Smarty模板制作后台管理系统主页 499
17.5.3情景应用3——html_option函数向下拉列表中添加列表项 501
17.5.4情景应用4——Smarty模板中应用正则表达式 503
17.5.5情景应用5——开启网站登录页面的缓存 505
17.6自我测试 506
17.7行动指南 507
17.8成功可以复制——征途巨人史玉柱 508
第18堂课 Zend Framework框架 511
18.1 Zend Framework的MVC介绍 512
18.1.1 Zend Framework概述 512
18.1.2 Zend Framework常用组件 512
18.1.3 MVC原理 512
18.2 Zend Framework的MVC环境搭建 513
18.2.1环境配置 513
18.2.2框架结构 514
18.2.3创建流程 515
18.2.4 Zend Framework的编码标准 518
18.3 Zend_Auth身份认证 519
18.3.1 Zend_Auth适配器 519
18.3.2身份持久认证 520
18.3.3数据库认证 523
18.4 Zend_Db数据库操作 524
18.4.1 Zend_Db_Adapter数据库操作 524
18.4.2 Zend_Db_Table数据库操作 524
18.4.3数据表类 526
18.5 Zend_File文件控制 530
18.5.1使用Zend_File_Transfer_Adapter_Http实现POST方式文件上传 530
18.5.2对上传文件的合理性验证 531
18.5.3为上传增加过滤规则 532
18.6 Zend_Layout网站布局 533
18.6.1 Zend_Layout概述 533
18.6.2 Zend_Layout使用方法 533
18.6.3 Zend_Layout应用实例 534
18.7 Zend_Paginator分页 536
18.7.1 Zend_Paginator简介 536
18.7.2 Zend_Paginator分页方法 536
18.7.3 Zend_Paginator分页应用 537
18.8照猫画虎——基本功训练 540
18.8.1基本功训练1——通过Zend_Acl控制角色和资源的权限 540
18.8.2基本功训练2——比较缓存日期与本地日期 542
18.8.3基本功训练3——应用Zend_Config配置站点初始参数 544
18.8.4基本功训练4——应用Zend_Form制作用户注册表单 547
18.8.5基本功训练5——应用Zend_Mail发送邮件 549
18.9情景应用——拓展与实践 551
18.9.1情景应用1——应用Zend_Framework进行用户身份验证 551
18.9.2情景应用2——应用Zend_Framework实现查询结果关键字描红 553
18.9.3情景应用3——应用Zend_Framework设计新闻发布系统首页 556
18.9.4情景应用4——应用Zend_Paginaator实现数据分页显示 560
18.9.5情景应用5——应用Zend_Mail接收邮件 561
18.10自我测试 564
18.11行动指南 564
18.12成功可以复制——创造互联网搜索时代拉里·佩奇和谢尔盖·布林 565
第19堂课 PHP的安全与防护 567
19.1 PHP加密函数 568
19.1.1使用crypt()函数进行加密 568
19.1.2使用md5()函数进行加密 569
19.1.3使用shal()函数进行加密 570
19.2 PHP加密扩展库 570
19.2.1 Mcrypt扩展库 570
19.2.2 Mhash扩展库 571
19.3 PHP漏洞和防护措施 572
19.3.1本地文件包含漏洞 572
19.3.2远程文件包含漏洞 573
19.3.3文件上传漏洞 573
19.3.4提交表单漏洞 574
19.3.5 SQL注入漏洞 575
19.4照猫画虎——基本功训练 575
19.4.1基本功训练1——通过crypt()函数进行加密 575
19.4.2基本功训练2——通过md5()函数进行加密 576
19.4.3基本功训练3——通过sha1()函数进行加密 576
19.4.4基本功训练4——通过mcrypt()函数进行加密、解密操作 577
19.4.5基本功训练5——通过mhash()扩展库进行加密、解密 578
19.5情景应用——拓展与实践 578
19.5.1情景应用1——通过crypt()函数对用户注册密码进行加密 578
19.5.2情景应用2——通过md5()函数对用户注册密码进行加密 579
19.5.3情景应用3——通过自定义函数实现加密操作 580
19.5.4情景应用4——隐藏PHP文件扩展名 580
19.5.5情景应用5——禁止用户输入敏感字符 581
19.6自我测试 583
19.7行动指南 584
19.8成功可以复制——初中站长的创业故事李兴平 585
第20堂课 PHP的字符编码 587
20.1字符集和编码 588
20.1.1 ISO8859字符集 588
20.1.2 GB2312与GBK字符集 588
20.1.3 Unicode字符集 589
20.1.4 UTF-8编码 589
20.2 PHP网页的字符编码 590
20.2.1设置编码格式 590
20.2.2转换编码格式 591
20.2.3检测字符串的编码 592
20.3 PHP开发中的乱码问题 593
20.3.1解决页面中的乱码问题 593
20.3.2数据库中的字符集编码问题 594
20.3.3避免截取中文字符串时出现乱码 595
20.4照猫画虎——基本功训练 596
20.4.1基本功训练1——Dreamweaver中编码格式的选择 596
20.4.2基本功训练2——创建gb2312编码格式的网页 597
20.4.3基本功训练3——通过iconv()函数实现编码格式的转换 598
20.4.4基本功训练4——通过header()函数设置PHP脚本文件的编码格式 599
20.4.5基本功训练5——设置MySQL数据库中数据的编码格式 599
20.5情景应用——拓展与实践 601
20.5.1情景应用1——采用utf-8编码设计论坛网页 601
20.5.2情景应用2——以utf8编码输出论坛中数据 602
20.5.3情景应用3——论坛中控制帖子标题输出的长度 603
20.5.4情景应用4——完成论坛中帖子的发布 605
20.5.5情景应用5——对输出的数据进行编码格式转换 606
20.6自我测试 607
20.7行动指南 608
20.8成功可以复制——暴雪公司的领航者迈克·莫汉 609
第21堂课 程序调试与错误处理 611
21.1基本调试策略 612
21.2常见错误分析 612
21.2.1语法错误 613
21.2.2定义错误 615
21.2.3逻辑错误 616
21.2.4运行错误 616
21.2.5环境错误 618
21.3 php.ini中的错误处理机制 619
21.3.1控制错误显示以及显示方式 619
21.3.2控制错误的级别 619
21.4程序调试方法 620
21.4.1应用DIE语句调试 620
21.4.2应用mysql_error()语句输出错误信息 621
21.5错误处理技巧 622
21.5.1隐藏错误 622
21.5.2自定义错误页面 622
21.6照猫画虎——基本功训练 623
21.6.1基本功训练1——解决程序的语法错误 623
21.6.2基本功训练2——计算商品的折扣价格 624
21.6.3基本功训练3——连接不存在的数据库 624
21.6.4基本功训练4——运行缺少第三方组件的程序 625
21.6.5基本功训练5——通过readfile()函数访问远程文件 626
21.7情景应用——拓展与实践 626
21.7.1情景应用1——分析、解决PHP与MySQL连接错误 626
21.7.2情景应用2——解决数据库乱码问题 628
21.7.3情景应用3——封装异常处理类 629
21.7.4情景应用4——使用错误处理器记录日志 630
21.7.5情景应用5——通过phpMyAdmin调试SQL语句中的错误 631
21.8自我测试 632
21.9行动指南 632
21.10成功可以复制——Java技术之父James Gosling 633
第4部分 实战篇 637
第22堂课 应用Smarty模板开发电子商务网站 637
22.1开发背景 638
22.2需求分析 638
22.3系统分析 638
22.3.1系统目标 638
22.3.2系统功能结构 639
22.3.3开发环境 639
22.3.4文件夹组织结构 640
22.4数据库设计 641
22.4.1数据库分析 641
22.4.2创建数据库和数据表 642
22.5公共文件设计 643
22.5.1数据库连接、管理和分页类文件 643
22.5.2 Smarty模板配置类文件 646
22.5.3执行类的实例化文件 646
22.6前台首页设计 646
22.6.1前台首页概述 646
22.6.2前台首页技术分析 647
22.6.3前台首页实现过程 647
22.7登录模块设计 649
22.7.1登录模块概述 649
22.7.2登录模块技术分析 650
22.7.3用户注册 651
22.7.4用户登录 653
22.7.5找回密码 655
22.8 会员信息模块设计 660
22.8.1会员信息模块概述 660
22.8.2会员信息模块技术分析 660
22.8.3会员中心 661
22.8.4安全退出 664
22.9商品展示模块设计 665
22.9.1商品展示模块概述 665
22.9.2商品展示模块技术分析 665
22.9.3商品展示模块的实现过程 666
22.10购物车模块设计 669
22.10.1购物车模块概述 669
22.10.2购物车模块技术分析 669
22.10.3购物车展示 671
22.10.4更改商品数量 673
22.10.5删除商品 674
22.10.6保存购物车 676
22.11收银台模块设计 678
22.11.1收银台模块概述 678
22.11.2收银台模块技术分析 678
22.11.3显示订单 678
22.11.4填写订单 679
22.11.5处理订单 679
22.12后台首页设计 681
22.12.1后台首页概述 681
22.12.2后台首页技术分析 681
22.12.3后台首页实现过程 683
22.13开发技巧与难点分析 684
22.13.1解决Ajax的乱码问题 684
22.13.2使用JS脚本获取、输出标签内容 685
22.13.3禁用页面缓存 685
22.13.4在新窗口中使用session 685
22.13.5判断上传文件格式 685
22.13.6设置服务器的时间 686
22.14开发总结 686
第23堂课 Zend Framework框架开发明日搜索引擎 687
23.1明日搜索引擎概述 688
23.2开发背景 688
23.3需求分析 688
23.4系统分析 688
23.4.1功能结构 689
23.4.2开发环境 689
23.5数据库设计 689
23.5.1数据库分析 690
23.5.2数据库概念设计 690
23.5.3创建数据库及数据表 691
23.6技术攻关 692
23.6.1类似Google搜索引擎的搜索条 692
23.6.2使用空格分隔多关键字 696
23.6.3关键字描红 699
23.6.4制作在线编辑器 701
23.7 MVC框架结构搭建 703
23.8首页设计 704
23.8.1首页概述 704
23.8.2首页技术分析 705
23.8.3首页的实现过程 705
23.9用户模块设计 708
23.9.1用户模块概述 708
23.9.2用户模块技术分析 708
23.9.3用户注册的实现过程 710
23.9.4用户登录的实现过程 712
23.10发表问题模块设计 714
23.10.1发表问题模块概述 714
23.10.2发表问题模块技术分析 715
23.10.3发表问题模块实现过程 716
23.11回复问题模块设计 718
23.11.1回复问题模块概述 718
23.11.2回复问题模块技术分析 719
23.11.3回复问题模块实现过程 719
23.12程序调试与错误处理 720
23.12.1项目开发过程中常见错误及解决方法 721
23.12.2自定义错误页面 721
23.13开发总结 722
第24堂课 学校图书馆管理系统 723
24.1开发背景 724
24.2需求分析 724
24.3系统设计 724
24.3.1系统目标 724
24.3.2系统功能结构 725
24.3.3系统流程图 725
24.3.4开发环境 725
24.3.5文件夹组织结构 726
24.4数据库设计 727
24.4.1数据库分析 727
24.4.2数据库概念设计 727
24.4.3创建数据库及数据表 728
24.5首页设计 729
24.5.1首页概述 729
24.5.2首页技术分析 730
24.5.3首页的实现过程 730
24.6管理员模块设计 731
24.6.1管理员模块概述 731
24.6.2管理员模块技术分析 732
24.6.3系统登录的实现过程 732
24.6.4查看管理员的实现过程 734
24.6.5添加管理员的实现过程 735
24.6.6设置管理员权限的实现过程 736
24.6.7删除管理员的实现过程 738
24.7图书档案管理模块设计 738
24.7.1图书档案管理模块概述 738
24.7.2图书档案管理模块技术分析 739
24.7.3查看图书信息列表的实现过程 739
24.7.4添加图书信息的实现过程 740
24.7.5修改图书信息的实现过程 742
24.7.6删除图书信息的实现过程 743
24.8图书借还模块设计 743
24.8.1图书借还模块概述 743
24.8.2图书借还模块技术分析 744
24.8.3图书借阅的实现过程 744
24.8.4图书续借的实现过程 747
24.8.5图书归还的实现过程 748
24.8.6图书借阅查询的实现过程 749
24.9开发技巧与难点分析 752
24.9.1如何自动计算图书归还日期 752
24.9.2如何对图书借阅信息进行统计排行 752
24.10开发总结 753
附录A PHP编码规则 755
A.1 PHP File文件格式 755
A.1.1常规 755
A.1.2缩进 755
A.1.3行的最大长度 755
A.1.4行结束标志 755
A.1.5引号 755
A.1.6运算符、小括号、空格和关键词 756
A.2命名约定 757
A.2.1类 757
A.2.2接口 757
A.2.3文件名 757
A.2.4函数和方法 758
A.2.5变量 758
A.2.6常量 759
A.2.7数据库表和字段 759
A.3编码风格 759
A.3.1 PHP代码划分(Demarcation) 759
A.3.2字符串 759
A.3.3数组 760
A.3.4类 760
A.3.5函数和方法 761
A.3.6控制语句 762
A.3.7数据库 763
A.3.8注释文档 764