标题：PHP编程宝典
内容简介
  PHP编程宝典第1篇为技能学习篇，主要包括初识PHP、PHP环境搭建、PHP语言基础、流程控制语句、函数、字符串、数组、日期和时间、PHP与Web页面交互、会话管理、文件系统、面向对象、PHP与MySQL数据库、ADODB类库、Smarty模板、Zend Framework框架等内容；第2篇为范例演练篇，主要包括基础知识、关键技术、新技术相关的范例；第3篇为项目实战篇，主要内容包括新闻发布系统、明日企业网、明日知道、明日编程词典4个小型项目；第4篇为商业系统篇，主要包括一个大型的商业项目，即明日科技书店。
本书附有配套DVD光盘，光盘中提供有书中全部实例和项目的源代码，这些源代码全部经过精心调试，能够在Windows XP、Windows Server 2003及Windows 7操作系统下编译和运行。
本书适用于PHP初学者、编程爱好者，同时也可以作为培训机构、大中专院校老师和学生的学习参考用书。
图书目录
第1篇　技能学习篇
第1章　初识PHP 
1.1　本章学习任务　4
1.2　确立学习信心　4
1.2.1　程序员的成长之路　4
1.2.2　如何学好编程　5
1.2.3　获取开发环境　6
1.2.4　代码编辑工具　7
1.3　分析PHP语言　8
1.3.1　PHP概述　8
1.3.2　PHP语言相关术语　9
1.3.3　PHP语言发展前景　11
1.4　探讨学习经验　12
1.4.1　PHP参考手册　12
1.4.2　PHP网络资源　13
1.4.3　成功案例　13
1.5　精彩回顾　15
第2章　PHP环境搭建 
2.1　本章学习任务　18
2.2　AppServ——PHP开发环境集成化　18
2.2.1　应用AppServ集成化安装包搭建PHP开发环境　18
2.2.2　测试AppServ是否安装成功　21
2.3　IIS+PHP+MySQL——独立搭建PHP开发环境　22
2.3.1　安装PHP 5.3.1　23
2.3.2　安装MySQL　24
2.3.3　安装IIS服务器　30
2.3.4　配置IIS服务器　31
2.3.5　测试独立环境是否搭建成功　32
2.4　Linux下搭建PHP开发环境　33
2.4.1　安装Apache服务器　33
2.4.2　安装MySQL数据库　35
2.4.3　安装PHP 5语言　36
2.4.4　配置PHP　38
2.4.5　测试PHP开启环境是否搭建成功　38
2.5　Dreamweaver开发工具　39
2.5.1　通过Dreamweaver创建站点　39
2.5.2　应用Dreamweaver开发第一个PHP程序　40
2.6　ZendStudio开发工具　42
2.6.1　Zend Studio for Eclipse的安装　42
2.6.2　应用Zend Studio开发第二个PHP程序　44
2.7　phpMyAdmin　48
2.7.1　Windows下phpMyAdmin的安装配置　48
2.7.2　Linux下phpMyAdmin的安装配置　48
2.8　实战检验　49
2.9　疑难解惑　50
2.9.1　服务器配置错误　50
2.9.2　PHP的配置错误　51
2.10　精彩回顾　51
第3章　PHP语言基础 
3.1　本章学习任务　54
3.2　PHP工作原理　55
3.3　PHP语法基础　56
3.3.1　PHP标记符　56
3.3.2　PHP的注释　57
3.4　PHP数据类型　58
3.4.1　整型　58
3.4.2　布尔型　59
3.4.3　浮点型　59
3.4.4　字符串型　60
3.4.5　复合数据类型　62
3.4.6　特殊数据类型　63
3.4.7　数据类型的获取与检测　63
3.4.8　数据类型转换　64
3.5　PHP常量　66
3.5.1　声明常量　66
3.5.2　获取常量　66
3.5.3　判断常量　67
3.5.4　常量应用　67
3.5.5　预定义常量　67
3.6　PHP变量　68
3.6.1　声明变量　68
3.6.2　变量赋值　69
3.6.3　变量作用域　70
3.6.4　可变变量　70
3.6.5　预定义变量　71
3.7　PHP运算符　72
3.7.1　字符串运算符　72
3.7.2　算术运算符　72
3.7.3　赋值运算符　73
3.7.4　自增、自减运算符　73
3.7.5　位运算符　74
3.7.6　逻辑运算符　74
3.7.7　比较运算符　75
3.7.8　条件运算符　75
3.7.9　运算符的优先级　76
3.8　PHP的表达式　77
3.9　包含文件　77
3.9.1　include语句　77
3.9.2　require语句　79
3.9.3　include_once语句　79
3.9.4　require_once语句　80
3.10　实战检验　81
3.10.1　通过PHP预定义变量获取上传文件的大小　81
3.10.2　应用包含语句完成电子商务网站主页的设计　81
3.11　疑难解惑　82
3.11.1　技巧一(编写标准风格的PHP代码)　82
3.11.2　技巧二(充分发挥PHP注释的作用)　83
3.11.3　疑难分析(register-globals选项对PHP变量的影响)　84
3.11.4　注意事项(掌握常用的输出语句)　86
3.12　精彩回顾　88
第4章　流程控制语句 
4.1　本章学习任务　90
4.2　程序的控制结构　90
4.2.1　顺序结构　90
4.2.2　选择(分支)结构　91
4.2.3　循环结构　91
4.3　条件控制语句　92
4.3.1　if条件语句　92
4.3.2　switch…case分支控制语句　94
4.4　循环控制语句　96
4.4.1　while循环语句　96
4.4.2　do…while循环语句　97
4.4.3　for循环语句　98
4.4.4　foreach循环　99
4.5　跳转控制语句　100
4.5.1　break语句跳出循环体　100
4.5.2　continue语句跳出本次循环　101
4.6　实战检验　102
4.6.1　应用if语句控制文件的访问权限　103
4.6.2　应用switch语句设计网站主页　103
4.6.3　应用for循环读取数据库中的数据　104
4.7　疑难解惑　104
4.7.1　流程控制语句的替代语法　104
4.7.2　for循环语句的其他格式　105
4.7.3　用不同的语句实现相同的功能　105
4.7.4　避免错误地使用continue语句　106
4.8　精彩回顾　106
第5章　函数 
5.1　本章学习任务　108
5.2　自定义函数　108
5.2.1　函数的命名规则　108
5.2.2　自定义函数格式　109
5.2.3　自定义函数的调用　109
5.2.4　自定义函数的参数　110
5.2.5　自定义函数的返回值　111
5.3　内置函数　112
5.3.1　IMAGE图像函数——典型的内置函数　112
5.3.2　imagecreate函数——创建画布　113
5.3.3　imagecolorallocate函数——颜色处理　113
5.3.4　imagegif函数——输出图像　114
5.3.5　imagestring函数——输出文字　115
5.3.6　应用Jpgraph类库创建3D饼形图　117
5.4　实战检验　118
5.4.1　应用PHP内置函数对字符串进行截取　118
5.4.2　应用自定义函数截取中文字符串　118
5.5　疑难解惑　120
5.5.1　什么是变量函数　120
5.5.2　PHP内置函数库加载　121
5.6　精彩回顾　121
第6章　字符串 
6.1　本章学习任务　124
6.2　转义、还原字符串　125
6.3　截取字符串　126
6.4　分割、合成字符串　128
6.5　替换字符串　129
6.5.1　str_ireplace()函数　129
6.5.2　substr_replace()函数　130
6.6　检索字符串　131
6.6.1　strstr()函数　131
6.6.2　substr_count()函数　132
6.7　去除字符串中空白字符和特殊字符　133
6.7.1　ltrim()函数　133
6.7.2　rtrim()函数　134
6.7.3　trim()函数　134
6.8　字符串与HTML转换　135
6.9　实战检验　136
6.9.1　超长文本的分页输出　136
6.9.2　查询关键字描红　137
6.9.3　购物车中数据的读取　138
6.10　疑难解惑　139
6.11　精彩回顾　140
第7章　数组 
7.1　本章学习任务　142
7.2　声明数组　143
7.2.1　用户创建数组　143
7.2.2　应用函数创建数组　144
7.2.3　创建二维数组　145
7.3　数组类型　146
7.4　遍历、输出数组　147
7.4.1　遍历数组　147
7.4.2　输出数组元素　149
7.5　数组函数　149
7.5.1　统计数组元素个数　149
7.5.2　向数组中添加元素　149
7.5.3　获取数组中最后一个元素　150
7.5.4　删除数组中重复元素　150
7.5.5　获取数组中指定元素的键名　151
7.6　实战检验　152
7.6.1　打乱数组中元素的顺序　152
7.6.2　生成在线考试题　153
7.7　疑难解惑　153
7.7.1　创建数组函数扩展　154
7.7.2　为什么$array[str]错了　154
7.7.3　如何设置PHP的错误级别　155
7.8　精彩回顾　156
第8章　日期和时间 
8.1　本章学习任务　158
8.2　时区设置　159
8.2.1　在php.ini文件中设置时区　159
8.2.2　通过date_default_timezone_set()函数设置时区　159
8.3　UNIX时间戳　160
8.3.1　获取日期的时间戳　160
8.3.2　获取当前时间戳　161
8.3.3　日期、时间转换为UNIX时间戳　161
8.4　日期和时间处理　162
8.4.1　格式化日期和时间　163
8.4.2　获取日期和时间信息　165
8.4.3　检验日期和时间的有效性　166
8.5　实战检验　166
8.5.1　获取系统当前时间和时间戳　166
8.5.2　比较两个时间的大小　167
8.5.3　倒计时　167
8.5.4　计算程序的运行时间　167
8.5.5　网页闹钟　168
8.6　疑难解惑　169
8.7　精彩回顾　170
第9章　PHP与Web页面交互 
9.1　本章学习任务　172
9.2　Web表单——PHP外交部发言人　173
9.3　通过form标记创建表单　174
9.4　表单元素——form家族成员　175
9.4.1　输入域标记input　175
9.4.2　选择域标记select和option　176
9.4.3　文本域标记textarea　177
9.5　POST和GET——表单元素提交方式　178
9.5.1　应用GET方式提交表单　179
9.5.2　应用POST方式提交表单　179
9.6　在Web页中嵌入PHP脚本　180
9.6.1　在HTML中嵌入PHP脚本　181
9.6.2　在表单中嵌入PHP脚本　182
9.7　$_POST[]和$_GET[]——表单元素值的获取方法　182
9.7.1　$_POST[]全局变量　183
9.7.2　$_GET[]全局变量　183
9.8　通过URL传递数据　183
9.8.1　使用URL传递数据　183
9.8.2　获取URL传递的数据　184
9.8.3　URL传递数据的编码和解码　185
9.9　实战检验　186
9.10　疑难解惑　187
9.10.1　注意表单元素名称大小写的区别　188
9.10.2　表单元素操作技巧两则　188
9.10.3　养成为URL传递的数据进行编码的习惯　188
9.11　精彩回顾　189
第10章　会话管理——数据的临时档案馆
10.1　本章学习任务　192
10.2　SESSION——记录用户的浏览状态　193
10.2.1　创建会话　193
10.2.2　SESSION的生命周期　196
10.3　SESSION的高级应用　199
10.3.1　SESSION临时文件　199
10.3.2　SESSION的缓存　200
10.3.3　SESSION数据库存储　201
10.4　COOKIE——客户端数据的永久存储　203
10.4.1　创建COOKIE　204
10.4.2　读取COOKIE　206
10.4.3　删除COOKIE　206
10.5　实战检验　207
10.5.1　通过SESSION判断用户的权限　207
10.5.2　通过COOKIE实现自动登录　209
10.6　疑难解惑　210
10.6.1　延长SESSION的生命周期　210
10.6.2　缓解服务器压力，提高网站访问速度　211
10.6.3　如何控制客户端COOKIE　211
10.6.4　COOKIE应用的注意事项　211
10.6.5　SESSION和COOKIE的区别　212
10.7　精彩回顾　212
第11章　文件系统——PHP文件掌门人
11.1　本章学习任务　214
11.1.1　本章体系结构　214
11.1.2　布置任务　214
11.2　解析文件操作方法　215
11.2.1　打开文件　215
11.2.2　读取文件　217
11.2.3　写入文件　221
11.2.4　关闭文件　223
11.3　阐述目录处理函数　223
11.3.1　打开目录　223
11.3.2　浏览目录　224
11.3.3　关闭目录　224
11.4　剖析文件上传、下载原理　226
11.4.1　控制上传文件——配置php.ini文件　226
11.4.2　判断上传文件——全局变量$_FILES　227
11.4.3　文件上传——move_uploaded_file()函数　228
11.4.4　文件下载　230
11.5　实战检验　230
11.5.1　通过文本文件统计网站访问量　230
11.5.2　规范化的文件上传　232
11.6　疑难解惑　234
11.6.1　如何访问远程文件　234
11.6.2　文件操作技术扩展　234
11.6.3　目录操作技术扩展　235
11.7　精彩回顾　235
第12章　面向对象——编程方法的革命
12.1　本章学习任务　238
12.1.1　追溯面向对象思想的来源　238
12.1.2　本章的学习任务　238
12.1.3　本章的实战任务　239
12.2　一切皆是对象　239
12.2.1　类　239
12.2.2　对象　240
12.2.3　面向对象的特点　240
12.3　类的声明　241
12.3.1　类的定义　241
12.3.2　成员属性　242
12.3.3　成员方法　243
12.4　类的实例化　243
12.4.1　创建对象　243
12.4.2　访问类中的成员　244
12.4.3　特殊的访问方法——“$this”和“::”　245
12.4.4　构造方法和析构方法　245
12.5　封装性　246
12.5.1　public(公共成员)　247
12.5.2　private(私有成员)　247
12.5.3　protected(保护成员)　248
12.6　继承性　248
12.6.1　类的继承——extends关键字　248
12.6.2　类的继承——parent::关键字　249
12.6.3　覆盖父类方法　250
12.7　抽象类和接口　251
12.7.1　抽象类　251
12.7.2　接口　252
12.8　多态性　254
12.8.1　通过继承实现多态　254
12.8.2　通过接口实现多态　255
12.9　面向对象——常用关键字　256
12.9.1　final关键字　256
12.9.2　static关键字——声明静态类成员　256
12.9.3　clone关键字——克隆对象　257
12.9.4　对象比较　258
12.9.5　instanceof关键字——对象类型检测　258
12.10　面向对象——常用魔术方法　258
12.10.1　__set()和__get()方法　259
12.10.2　__isset()和__unset()方法　259
12.10.3　__call()方法　259
12.10.4　__toString()方法　260
12.10.5　__autoload()方法　260
12.11　实战检验　261
12.11.1　封装一个数据库连接类　261
12.11.2　封装一个数据库操作类　262
12.12　疑难解惑　264
12.12.1　类名称的定义　264
12.12.2　自动加载对象　264
12.12.3　构造函数的妙用　264
12.13　精彩回顾　265
第13章　PHP与MySQL数据库——黄金组合
13.1　本章学习任务　268
13.1.1　系统学习任务　268
13.1.2　经典实战任务　268
13.2　MySQL概述　269
13.2.1　MySQL的特点　269
13.2.2　SQL和MySQL　269
13.3　MySQL服务器的启动和关闭　270
13.3.1　启动MySQL服务器　270
13.3.2　连接MySQL服务器　271
13.3.3　关闭MySQL服务器　271
13.4　MySQL数据库　272
13.4.1　创建数据库　272
13.4.2　选择数据库　273
13.4.3　删除数据库　273
13.5　MySQL数据表　274
13.5.1　创建表　274
13.5.2　查看表　275
13.5.3　修改表　276
13.5.4　重命名表　277
13.5.5　删除表　277
13.6　MySQL数据　278
13.6.1　添加数据　278
13.6.2　修改数据　279
13.6.3　删除数据　279
13.6.4　查询数据　280
13.7　MySQL数据类型　282
13.7.1　数字类型　283
13.7.2　字符串类型　283
13.7.3　日期和时间类型　285
13.8　PHP操作MySQL数据库的步骤　285
13.9　PHP操作MySQL数据库的方法　286
13.9.1　应用mysql_connect()函数连接MySQL服务器　286
13.9.2　应用mysql_select_db()函数选择MySQL数据库　287
13.9.3　应用mysql_query()函数执行SQL语句　288
13.9.4　应用mysql_fetch_array()函数将结果集返回到数组中　289
13.9.5　应用mysql_fetch_row()函数从结果集中获取一行作为枚举数组　290
13.9.6　应用mysql_num_rows()函数获取查询结果集中的记录数　291
13.10　实战检验　292
13.10.1　通过insert语句添加图书信息　292
13.10.2　通过select语句查询图书信息　294
13.11　疑难解惑　295
13.11.1　避免输出中文字符串时出现乱码　295
13.11.2　数据库编码格式的选择　296
13.12　精彩回顾　296
第14章　ADODB类库——数据库管家
14.1　本章学习任务　298
14.2　ADODB概述　299
14.3　熟悉操作流程　300
14.4　连接数据库系统和数据库　301
14.4.1　应用ADONewConnection()函数连接数据库系统　301
14.4.2　应用PConnect()函数持久化连接数据库　301
14.4.3　应用Connect()函数非持久化连接数据库　301
14.4.4　ADODB连接MySQL数据库　301
14.5　公共变量　302
14.6　操作SQL语句　303
14.6.1　应用execute()函数执行SQL语句　303
14.6.2　应用SelectLimit()函数控制select查询语句的起始位置　304
14.6.3　应用GetInsertSQL()、GetUpdateSQL()函数添加、更新数据　305
14.6.4　操作SQL语句的其他方法　306
14.7　控制结果集　307
14.7.1　控制指针的方法　307
14.7.2　控制结果集内容的方法　307
14.7.3　日期格式和数据类型的转换　309
14.8　ADODB中的分页　310
14.9　错误处理　310
14.10　实战检验　311
14.10.1　ADODB连接、操作数据库类　311
14.10.2　ADODB分页类　313
14.11　疑难解惑　316
14.11.1　本章程序运行的前提条件　316
14.11.2　一个小巧的分页函数——ADODB_Pager()函数　316
14.11.3　如何连接Microsoft SQL Server数据库　317
14.11.4　如何连接Access数据库　317
14.12　精彩回顾　317
第15章　Smarty模板——PHP程序的动静分离
15.1　本章学习任务　320
15.1.1　系统学习任务　320
15.1.2　经典实战任务　320
15.2　走进Smarty模板　321
15.2.1　Smarty模板引擎的下载　322
15.2.2　Smarty模板引擎的安装　323
15.2.3　Smarty模板引擎的配置　323
15.2.4　走进Smarty模板引擎　325
15.3　Smarty模板设计——静态页处理　326
15.3.1　基本语法(注释、函数和属性)　327
15.3.2　变量　327
15.3.3　变量调节器　328
15.3.4　组合修改器　329
15.3.5　内建函数(动态文件、模板文件的包含和流程控制语句)　330
15.3.6　自定义函数　334
15.3.7　配置文件　336
15.4　Smarty程序设计——动态文件操作　338
15.4.1　SMARTY_PATH常量　338
15.4.2　Smarty变量　338
15.4.3　Smarty方法　338
15.4.4　Smarty缓存　339
15.5　实战检验　340
15.5.1　在Smarty中通过truncate方法截取字符串　341
15.5.2　应用Smarty+ADODB完成数据的分页显示　342
15.6　疑难解惑　344
15.6.1　缓存的合理应用　344
15.6.2　什么是较好的Smarty配置方案　344
15.7　精彩回顾　344
第16章　Zend Framework框架 
16.1　本章学习任务　346
16.1.1　本章知识体系　346
16.1.2　本章的实践任务　346
16.2　Zend Framework的MVC介绍　347
16.2.1　Zend Framework概述　347
16.2.2　Zend Framework 常用组件　347
16.2.3　MVC原理　348
16.3　Zend Framework的MVC环境搭建　349
16.3.1　环境配置　349
16.3.2　框架结构　350
16.3.3　创建流程　350
16.3.4　Zend Framework的编码标准　353
16.4　Zend_Acl权限管理　354
16.4.1　角色(role)　355
16.4.2　资源(resource)　355
16.4.3　Zend_Acl应用　355
16.5　Zend_Auth身份认证　356
16.5.1　Zend_Auth适配器　357
16.5.2　身份持久认证　358
16.5.3　数据库认证　360
16.6　Zend_Cache缓存服务　364
16.6.1　Zend_Cache的原理　365
16.6.2　Zend_Cache前端　366
16.6.3　Zend_Cache后端　369
16.7　Zend_Db数据库操作　370
16.7.1　Zend_Db_Adapter数据库操作　370
16.7.2　Zend_Db_Table数据库操作　370
16.7.3　数据表类　372
16.8　Zend_File文件控制　375
16.8.1　使用Zend_File_Transfer_Adapter_Http实现POST方式文件上传　376
16.8.2　对上传文件的合理性验证　377
16.8.3　为上传增加过滤规则　378
16.9　Zend_Layout网站布局　378
16.9.1　Zend_Layout概述　378
16.9.2　Zend_Layout的使用方法　379
16.9.3　Zend_Layout应用实例　379
16.10　Zend_Paginator分页　381
16.10.1　Zend_Paginator简介　381
16.10.2　Zend_Paginator实现分页的方法　381
16.10.3　Zend_Paginator实现分页的应用　383
16.11　实战检验　385
16.11.1　使用Zend Framework实现用户身份的验证　385
16.11.2　使用Zend Framework实现查询结果的关键字描红显示　386
16.12　疑难解惑　388
16.12.1　MVC框架目录的命名　388
16.12.2　Zend_Cache组件的应用场合　389
16.13　精彩回顾　389
第2篇　范例演练篇
第17章　基础知识——学以致用
17.1　过滤HTML非法字符　394
17.1.1　范例功能演示　394
17.1.2　开发思路指引　394
17.1.3　专家难点解析　395
17.1.4　设计过程详解　395
17.1.5　范例开发手记　396
17.1.6　进阶与提高　396
17.2　上传图片并添加水印　397
17.2.1　范例功能演示　397
17.2.2　开发思路指引　397
17.2.3　专家难点解析　397
17.2.4　设计过程详解　399
17.2.5　范例开发手记　400
17.2.6　进阶与提高　401
17.3　利用WebBrowser控件进行打印　401
17.3.1　范例功能演示　401
17.3.2　开发思路指引　402
17.3.3　专家难点解析　402
17.3.4　设计过程详解　402
17.3.5　范例开发手记　402
17.3.6　进阶与提高　403
17.4　应用正则表达式验证用户注册信息　404
17.4.1　范例功能演示　404
17.4.2　开发思路指引　404
17.4.3　专家难点解析　405
17.4.4　设计过程详解　406
17.4.5　范例开发手记　407
17.4.6　进阶与提高　408
17.5　应用JavaScript+GD2函数制作无刷新验证码　409
17.5.1　范例功能演示　409
17.5.2　开发思路指引　409
17.5.3　专家难点解析　410
17.5.4　设计过程详解　410
17.5.5　范例开发手记　411
17.5.6　进阶与提高　412
17.6　应用JavaScript实现复选框的全选、反选和不选　412
17.6.1　范例功能演示　412
17.6.2　开发思路指引　413
17.6.3　专家难点解析　413
17.6.4　设计过程详解　413
17.6.5　范例开发手记　414
17.6.6　进阶与提高　415
第18章　关键技术——百炼成钢
18.1　JpGraph类库——创建3D饼形图　418
18.1.1　范例功能演示　418
18.1.2　开发思路指引　418
18.1.3　专家难点解析　419
18.1.4　设计过程详解　419
18.1.5　范例开发手记　420
18.1.6　进阶与提高　420
18.2　MD5加密——用户注册密码保护　421
18.2.1　范例功能演示　421
18.2.2　开发思路指引　421
18.2.3　专家难点解析　421
18.2.4　设计过程详解　422
18.2.5　范例开发手记　422
18.2.6　进阶与提高　423
18.3　AJAX无刷新分页　424
18.3.1　范例功能演示　424
18.3.2　开发思路指引　424
18.3.3　专家难点解析　425
18.3.4　设计过程详解　427
18.3.5　范例开发手记　429
18.3.6　进阶与提高　429
18.4　购物车　431
18.4.1　范例功能演示　431
18.4.2　开发思路指引　432
18.4.3　专家难点解析　432
18.4.4　设计过程详解　434
18.4.5　范例开发手记　437
18.4.6　进阶与提高　437
18.5　应用CKEditor网页编辑器　438
18.5.1　范例功能演示　438
18.5.2　开发思路指引　439
18.5.3　专家难点解析　439
18.5.4　设计过程详解　440
18.5.5　范例开发手记　441
18.5.6　进阶与提高　442
18.6　MySQL存储过程——用户注册　443
18.6.1　范例功能演示　443
18.6.2　开发思路指引　443
18.6.3　专家难点解析　443
18.6.4　设计过程详解　445
18.6.5　范例开发手记　445
18.6.6　进阶与提高　446
18.7　MySQL事务处理——银行安全转账　447
18.7.1　范例功能演示　447
18.7.2　开发思路指引　447
18.7.3　专家难点解析　448
18.7.4　设计过程详解　448
18.7.5　范例开发手记　449
18.7.6　进阶与提高　449
18.8　PHP国际化——开发支持中、英文的程序　450
18.8.1　范例功能演示　450
18.8.2　开发思路指引　450
18.8.3　专家难点解析　451
18.8.4　设计过程详解　452
18.8.5　范例开发手记　453
18.8.6　进阶与提高　454
第19章　新技术——熟能生巧
19.1　jQuery生成网页特效　456
19.1.1　范例功能演示　456
19.1.2　开发思路指引　456
19.1.3　专家难点解析　456
19.1.4　设计过程详解　458
19.1.5　范例开发手记　459
19.1.6　进阶与提高　459
19.2　jQuery制作级联菜单　459
19.2.1　范例功能演示　459
19.2.2　开发思路指引　460
19.2.3　专家难点解析　460
19.2.4　设计过程详解　461
19.2.5　范例开发手记　462
19.2.6　进阶与提高　462
19.3　jQuery验证表单元素　463
19.3.1　范例功能演示　463
19.3.2　开发思路指引　464
19.3.3　专家难点解析　464
19.3.4　设计过程详解　465
19.3.5　范例开发手记　467
19.3.6　进阶与提高　467
19.4　register_function()方法——注册模板函数　468
19.4.1　范例功能演示　468
19.4.2　开发思路指引　468
19.4.3　专家难点解析　468
19.4.4　设计过程详解　469
19.4.5　范例开发手记　471
19.4.6　进阶与提高　471
19.5　zend_mail发送邮件——激活注册用户　472
19.5.1　范例功能演示　472
19.5.2　开发思路指引　472
19.5.3　专家难点解析　473
19.5.4　设计过程详解　474
19.5.5　范例开发手记　475
19.5.6　进阶与提高　475
19.6　PHP伪静态——隐藏PHP文件扩展名　476
19.6.1　范例功能演示　476
19.6.2　开发思路指引　476
19.6.3　专家难点解析　477
19.6.4　设计过程详解　477
19.6.5　范例开发手记　479
19.6.6　进阶与提高　479
第3篇　项目实战篇
第20章　新闻发布系统——毕业设计的首选
20.1　新闻发布系统概述　484
20.2　开发背景　484
20.3　需求分析　484
20.3.1　功能分析　484
20.3.2　运行环境　484
20.4　功能结构　485
20.5　数据库设计　485
20.5.1　数据库概念设计　485
20.5.2　创建数据库及数据表　487
20.6　MVC框架结构的搭建　488
20.6.1　MVC开发模式介绍　488
20.6.2　Zend Framework的MVC目录结构　489
20.6.3　Zend Framework的MVC结构创建过程　490
20.7　技术攻关　492
20.7.1　站内搜索——使用空格分隔多个关键字　492
20.7.2　关键字描红　495
20.7.3　隐藏PHP文件后缀——伪静态技术　497
20.8　前台首页设计　498
20.8.1　前台首页概述　498
20.8.2　前台首页技术分析　499
20.8.3　前台首页的实现过程　499
20.9　后台管理模块设计　502
20.9.1　后台管理模块概述　502
20.9.2　后台管理模块技术分析　503
20.9.3　管理员登录实现过程　504
20.9.4　新闻管理模块实现过程　505
20.9.5　用户管理模块实现过程　506
20.10　程序调试与错误处理　506
20.10.1　语法错误　507
20.10.2　语义错误　509
20.10.3　注释错误　509
20.10.4　运行错误　509
20.10.5　逻辑错误　511
20.10.6　错误提示页面　511
20.11　开发总结　512
第21章　明日企业网——企业网站开发模板
21.1　明日企业网概述　514
21.2　开发背景　514
21.3　需求分析　514
21.4　功能结构　515
21.5　数据库设计　516
21.5.1　数据库概念设计　516
21.5.2　创建数据库及数据表　517
21.6　技术攻关　519
21.6.1　Smarty模板　520
21.6.2　最简单的网页框架　521
21.6.3　ADODB类库　521
21.6.4　封装分页类　522
21.7　首页设计　523
21.7.1　首页概述　523
21.7.2　首页技术分析　523
21.7.3　首页的实现过程　524
21.8　产品展示设计　525
21.8.1　产品展示概述　525
21.8.2　产品展示技术分析　527
21.8.3　产品展示实现过程　527
21.9　后台管理系统设计　529
21.9.1　后台管理系统概述　529
21.9.2　后台管理系统技术分析　529
21.9.3　后台管理系统实现过程　531
21.10　程序调试与错误处理　535
21.10.1　SQL语句的返回机制　535
21.10.2　错误处理　536
21.11　开发总结　536
第22章　明日知道——程序员的十万个为什么
22.1　明日知道概述　538
22.2　开发背景　538
22.3　需求分析　538
22.4　功能结构　538
22.5　数据库设计　539
22.5.1　数据库分析　539
22.5.2　数据库概念设计　539
22.5.3　创建数据库及数据表　541
22.6　技术攻关　542
22.6.1　类似Google搜索引擎的搜索条　543
22.6.2　使用空格分隔多关键字　546
22.6.3　关键字描红　549
22.6.4　制作在线编辑器　550
22.7　MVC框架结构搭建　553
22.8　首页设计　554
22.8.1　首页概述　554
22.8.2　首页技术分析　554
22.8.3　首页的实现过程　555
22.9　用户模块设计　557
22.9.1　用户模块概述　557
22.9.2　用户模块技术分析　557
22.9.3　用户注册的实现过程　559
22.9.4　用户登录的实现过程　560
22.10　发表问题模块设计　562
22.10.1　发表问题模块概述　563
22.10.2　发表问题模块技术分析　563
22.10.3　发表问题模块实现过程　564
22.11　回复问题模块设计　566
22.11.1　回复问题模块概述　566
22.11.2　回复问题模块技术分析　566
22.11.3　回复问题模块实现过程　567
22.12　程序调试与错误处理　568
22.12.1　项目开发过程中常见错误及解决方法　568
22.12.2　自定义错误页面　569
22.13　开发总结　569
第23章　明日编程词典——在线体验版
23.1　明日编程词典概述　572
23.2　开发背景　572
23.3　需求分析　572
23.4　功能结构　572
23.5　数据库设计　573
23.5.1　创建数据库　573
23.5.2　创建数据表　574
23.5.3　分离、附加数据库　575
23.6　技术攻关　576
23.6.1　树状导航菜单设计　577
23.6.2　向Flash中传递参数　578
23.6.3　Smarty注册模板函数——读取文件　580
23.6.4　框架设计网站布局　581
23.7　Smarty模板　583
23.8　ADODB类库　584
23.9　首页设计　585
23.9.1　首页概述　585
23.9.2　首页技术分析　586
23.9.3　首页的实现过程　586
23.10　网站模块导航设计　586
23.10.1　网站模块导航概述　587
23.10.2　网站模块导航技术分析　587
23.10.3　网站模块导航实现过程　588
23.11　内容树状导航设计　589
23.11.1　内容树状导航概述　589
23.11.2　内容树状导航技术分析　590
23.11.3　内容树状导航实现过程　591
23.12　内容展示区设计　594
23.12.1　内容展示区概述　594
23.12.2　内容展示区技术分析　594
23.12.3　内容展示区实现过程　594
23.13　程序调试与错误处理　595
23.14　开发总结　595
第4篇　商业系统篇
第24章　明日科技书店 
24.1　明日科技书店概述　600
24.2　开发背景　600
24.3　需求分析　600
24.4　功能结构图　601
24.5　系统流程图　602
24.6　开发环境　603
24.7　数据库设计　603
24.7.1　数据库分析　603
24.7.2　创建数据库　603
24.7.3　创建数据表　604
24.7.4　数据表的结构　604
24.8　功能模块构思　606
24.9　公共类设计　607
24.9.1　数据库连接类　607
24.9.2　数据库管理类　609
24.9.3　Smarty模板引擎配置类　610
24.9.4　购物车类　610
24.9.5　分页类　612
24.9.6　工具类　613
24.10　首页设计　615
24.10.1　首页概述　615
24.10.2　首页技术分析　616
24.10.3　首页实现过程　617
24.11　用户模块设计　618
24.11.1　用户模块概述　618
24.11.2　用户注册　618
24.11.3　用户登录　621
24.11.4　用户中心　623
24.11.5　找回登录密码　625
24.12　图书展示模块设计　626
24.12.1　图书分类展示　626
24.12.2　特别图书展示　629
24.12.3　图书试读展示　630
24.12.4　图书详细信息展示　632
24.13　图书订购模块设计　635
24.13.1　购物车的实现　635
24.13.2　填写收货人信息　638
24.13.3　确认订购信息　639
24.13.4　选择支付方式　640
24.13.5　确认支付信息　641
24.14　后台登录页设计　642
24.14.1　后台登录页概述　642
24.14.2　后台登录页实现过程　643
24.15　系统管理模块　644
24.15.1　系统信息设置　644
24.15.2　更改管理员密码　645
24.16　图书类别管理模块　645
24.16.1　图书大类管理　646
24.16.2　图书小类管理　647
24.16.3　出版社分类管理　649
24.17　图书管理模块　651
24.17.1　图书信息管理　651
24.17.2　图书试读管理　654
24.18　用户信息管理模块　655
24.18.1　用户信息管理　655
24.18.2　用户反馈信息管理　656
24.19　订单信息管理模块　656
24.19.1　订单信息列表管理　657
24.19.2　订单详细信息管理　657
24.20　程序调试与错误处理　658
24.21　编写用户使用手册　659
24.22　系统发布　662
24.23　开发总结　664