第1篇 PHP基础知识 3
第1章 初识PHP 3
1.1 了解PHP 4
1.1.1 PHP的概念 4
1.1.2 PHP的发展历程 4
1.1.3 PHP语言的优势 5
1.2 PHP的应用领域 5
1.3 PHP 5.5 的新特点 6
1.4 PHP常用开发工具 8
1.4.1 PHP代码开发工具 8
1.4.2 网页设计工具 9
1.4.3 文本编辑工具 9
1.5 网站建设的基本流程 10
1.5.1 网站规划 10
1.5.2 搜集资料 10
1.5.3 制作网页 11
1.5.4 网站测试 12
1.5.5 申请域名 12
1.5.6 申请空间 12
1.5.7 网站备案 12
1.5.8 发布网页 16
1.5.9 网站推广和维护 16
1.6 高手甜点 17
1.7 跟我练练手 17
第2章 配置PHP服务器环境 19
2.1 PHP服务器概述 20
2.2 安装PHP前的准备工作 20
2.2.1 软硬件环境 20
2.2.2 实例1——获取PHP 5.5安装资源包 21
2.3 PHP+IIS服务器的安装配置 22
2.3.1 实例2——IIS简介及其安装 23
2.3.2 实例3——PHP的安装 24
2.3.3 实例4——设置虚拟目录 26
2.4 PHP+Apache服务器的环境搭建 27
2.4.1 Apache简介 28
2.4.2 实例5——关闭原有的网站服务器 28
2.4.3 实例6——安装Apache 29
2.4.4 实例7——将PHP与Apache建立关联 30
2.5 实例8——Windows下使用WampServer组合包 32
2.6 实例9——测试第一个PHP程序 34
2.7 高手甜点 35
2.8 跟我练练手 36
第3章 PHP语言基础 37
3.1 PHP标识 38
3.1.1 短风格 38
3.1.2 Script风格 38
3.1.3 ASP风格 38
3.2 编码规范 38
3.2.1 什么是编码规范 39
3.2.2 PHP的一些编码规范 39
3.3 常量 40
3.3.1 实例1——声明和使用常量 40
3.3.2 实例2——内置常量 41
3.4 变量 43
3.4.1 PHP中的变量声明 43
3.4.2 实例3——可变变量与变量的引用 43
3.4.3 实例4——变量作用域 44
3.5 变量的类型 48
3.5.1 什么是类型 48
3.5.2 整型 49
3.5.3 浮点型 49
3.5.4 布尔型 49
3.5.5 实例5——字符串型 50
3.5.6 实例6——数组型 51
3.5.7 对象型 53
3.5.8 NULL型 53
3.5.9 资源类型 54
3.5.10 实例7——数据类型之间相互转换 54
3.6 运算符 55
3.6.1 实例8——算术运算符 55
3.6.2 实例9——字符串运算符 56
3.6.3 赋值运算符 57
3.6.4 实例10——比较运算符 58
3.6.5 逻辑运算符 59
3.6.6 按位运算符 59
3.6.7 否定控制运算符 60
3.6.8 错误控制运算符 60
3.6.9 三元运算符 60
3.6.10 运算符的优先级和结合规则 60
3.7 PHP的表达式 60
3.8 实例11——创建多维数组 61
3.9 高手甜点 62
3.10 跟我练练手 62
第4章 流程控制和函数 63
4.1 流程控制概述 64
4.2 条件控制结构 64
4.2.1 实例1——单一条件分支结构(if语句) 64
4.2.2 实例2——双向条件分支结构(if…else语句) 65
4.2.3 实例3——多向条件分支结构(elseif语句) 66
4.2.4 实例4——多向条件分支结构(switch语句) 68
4.3 循环控制结构 69
4.3.1 实例5——while循环语句 69
4.3.2 实例6——do…while循环语句 71
4.3.3 实例7——for循环语句 72
4.3.4 实例8——foreach循环语句 73
4.3.5 实例9——流程控制的另一种书写格式 74
4.3.6 实例10——使用break/continue语句跳出循环 76
4.4 函数 77
4.4.1 PHP函数概述 77
4.4.2 实例11——定义和调用函数 77
4.4.3 实例12——向函数传递参数数值 78
4.4.4 实例13——向函数传递参数引用 79
4.4.5 实例14——从函数中返回值 80
4.4.6 实例15——对函数的引用 81
4.4.7 实例16——对函数取消引用 82
4.5 实例17——条件分支结构的综合应用 83
4.6 实例18——循环控制结构的综合应用 84
4.7 高手甜点 85
4.8 跟我练练手 86
第5章 字符串和正则表达式 87
5.1 实例1——字符串的单引号和双引号 88
5.2 实例2——字符串的连接符 89
5.3 字符串的基本操作 91
5.3.1 手动和自动转义字符串中的字符 91
5.3.2 实例3——计算字符串的长度 91
5.3.3 实例4——字符串单词统计 92
5.3.4 实例5——清理字符串中的空格 92
5.3.5 实例6——字符串切分与组合 93
5.3.6 实例7——字符串子串截取 94
5.3.7 实例8——字符串子串替换 95
5.3.8 实例9——字符串查找 96
5.4 什么是正则表达式 97
5.5 正则表达式语法规则 97
5.5.1 方括号([]) 98
5.5.2 连字符(-) 98
5.5.3 点号字符(.) 98
5.5.4 限定符(+、*、?、{n,m}) 98
5.5.5 行定位符(^和$) 98
5.5.6 排除字符([^]) 99
5.5.7 括号字符(()) 99
5.5.8 选择字符(|) 99
5.5.9 转义字符(\)与反斜杠(\ 99
5.5.10 认证email的正则表达 99
5.5.11 实例10——使用正则表达式对字符串进行匹配 100
5.5.12 实例11——使用正则表达式替换字符串子串 101
5.5.13 实例12——使用正则表达式切分字符串 102
5.6 实例13——创建酒店系统在线订房表 103
5.7 高手甜点 106
5.8 跟我练练手 106
第6章 PHP数组及操作 109
6.1 什么是数组 110
6.2 数组类型 110
6.2.1 实例1——数字索引数组 110
6.2.2 实例2——关联索引数组 111
6.3 数组构造 112
6.3.1 实例3——一维数组 112
6.3.2 实例4——多维数组 113
6.4 遍历数组 115
6.4.1 实例5——遍历一维数字索引数组 115
6.4.2 实例6——遍历一维联合索引数组 116
6.4.3 实例7——遍历多维数组 117
6.5 数组排序 118
6.5.1 实例8——一维数组排序 118
6.5.2 实例9——多维数组排序 120
6.6 实例10——字符串与数组的转换 121
6.7 向数组中添加和删除元素 122
6.7.1 实例11——向数组中添加元素 122
6.7.2 实例12——从数组中删除元素 124
6.8 实例13——查询数组中指定元素 126
6.9 实例14——统计数组元素个数 127
6.10 实例15——删除数组中重复元素 129
6.11 实例16——调换数组中的键值和元素值 130
6.12 实例17——数组的序列化 131
6.13 高手甜点 132
6.14 跟我练练手 132
第2篇 核心技术 137
第7章 PHP与Web页面交互 137
7.1 实例1——使用动态内容 138
7.2 表单与PHP 139
7.3 表单设计 139
7.3.1 表单基本结构 139
7.3.2 实例2——文本框 139
7.3.3 实例3——选项框 141
7.3.4 实例4——单选按钮 142
7.3.5 实例5——下拉列表 144
7.3.6 实例6——重置按钮 145
7.3.7 实例7——提交按钮 146
7.4 传递数据的两种方法 148
7.4.1 用POST方式传递数据 149
7.4.2 实例8——用GET方式传递数据 149
7.5 PHP获取表单传递数据的方法 150
7.6 实例9——PHP对URL传递的参数进行编码 151
7.7 实例10——PHP与Web表单的综合应用 151
7.8 高手甜点 153
7.9 跟我练练手 154
第8章 时间和日期 155
8.1 系统时区设置 156
8.1.1 时区划分 156
8.1.2 时区设置 156
8.2 PHP日期和时间函数 156
8.2.1 关于UNIX时间戳 156
8.2.2 实例1——获取当前时间戳 157
8.2.3 获取当前日期和时间 158
8.2.4 实例2——使用时间戳获取日期信息 158
8.2.5 实例3——检验日期的有效性 161
8.2.6 实例4——输出格式化时间戳的日期和时间 162
8.2.7 实例5——显示本地化的日期和时间 163
8.2.8 实例6——将日期和时间解析为UNIX时间戳 165
8.2.9 日期和时间在PHP和MySQL数据格式之间转换 165
8.3 实例7——比较两个时间的大小 166
8.4 实例8——实现倒计时功能 167
8.5 高手甜点 167
8.6 跟我练练手 168
第9章 面向对象编程 169
9.1 类和对象的介绍 170
9.2 PHP中类的操作 171
9.2.1 类的声明 171
9.2.2 成员属性 171
9.2.3 成员方法 172
9.2.4 类的实例化 172
9.2.5 实例1——访问类中的成员属性和方法 173
9.3 实例2——构造方法和析构方法 174
9.4 实例3——访问方法 176
9.5 实例4——类的继承 178
9.6 抽象类和接口 179
9.6.1 实例5——抽象类 179
9.6.2 实例6——接口 180
9.7 面向对象的多态性 183
9.7.1 实例7——通过继承实现多态 183
9.7.2 实例8——通过接口实现多态 184
9.8 高手甜点 186
9.9 跟我练练手 186
第10章 错误、异常处理与调试 187
10.1 常见的错误和异常 188
10.2 错误处理 191
10.2.1 php.ini中的错误处理机制 191
10.2.2 实例1——应用DIE语句调试 191
10.2.3 实例2——自定义错误和错误触发器 192
10.2.4 实例3——错误记录 196
10.3 异常处理 197
10.3.1 实例4——异常的基本处理方法 197
10.3.2 实例5——自定义的异常处理器 199
10.3.3 实例6——处理多个异常 200
10.3.4 实例7——设置顶层异常处理器 202
10.4 实例8——处理异常或错误 203
10.5 高手甜点 204
10.6 跟我练练手 205
第11章 文件系统与操作 207
11.1 文件操作 208
11.1.1 实例1——文件数据写入 208
11.1.2 实例2——文件数据读取 211
11.2 实例3——目录操作 213
11.3 实例4——文件的上传 218
11.4 实例5——编写文本类型的访客计算器 220
11.5 高手甜点 221
11.6 跟我练练手 221
第12章 图形图像处理技术 223
12.1 实例1——在PHP中加载GD库 224
12.2 图形图像的典型应用案例 226
12.2.1 实例2——创建一个简单的图像 226
12.2.2 实例3——使用GD2函数在照片上添加文字 228
12.2.3 实例4——使用TrueType字体处理中文生成图片 229
12.3 Jpgraph库的使用 231
12.3.1 实例5——Jpgraph的安装 231
12.3.2 实例6——Jpgraph的配置 232
12.3.3 实例7——制作柱形图与折线图统计图 232
12.3.4 实例8——制作圆形统计图 234
12.4 实例9——制作3D饼形统计图 236
12.5 高手甜点 237
12.6 跟我练练手 238
第13章 Cookie和会话管理 239
13.1 Cookie基本操作 240
13.1.1 什么是Cookie 240
13.1.2 实例1——创建Cookie 240
13.1.3 实例2——读取Cookie 241
13.1.4 实例3——删除Cookie 242
13.2 认识Session 243
13.2.1 什么是Session 243
13.2.2 Session基本功能 244
13.2.3 Cookie与Session 244
13.2.4 储存Session ID在Cookie或URL中 244
13.3 会话管理 244
13.3.1 实例4——创建会话 244
13.3.2 实例5——注册会话变量 245
13.3.3 实例6——使用会话变量 246
13.3.4 实例7——注销和销毁会话变量 246
13.4 实例8——会话管理的综合应用 247
13.5 高手甜点 248
13.6 跟我练练手 249
第14章 PHP加密技术 251
14.1 使用PHP加密函数 252
14.1.1 实例1——使用md5()函数进行加密 252
14.1.2 实例2——使用crypt()函数进行加密 252
14.1.3 实例3——使用shal()函数进行加密 254
14.2 使用PHP加密扩展库 254
14.2.1 实例4——安装和使用Mcrypt扩展库 254
14.2.2 实例5——使用Mhash扩展库 256
14.3 高手甜点 258
14.4 跟我练练手 259
第3篇 数据库操作 263
第15章 MySQL数据库基础 263
15.1 什么是MySQL 264
15.1.1 客户机—服务器软件 264
15.1.2 MySQL版本 264
15.1.3 MySQL的优势 265
15.2 启动服务并登录MySQL数据库 265
15.2.1 实例1——启动MySQL服务 266
15.2.2 实例2——登录MySQL数据库 267
15.2.3 实例3——配置Path变量 269
15.3 MySQL数据库的基本操作 271
15.3.1 实例4——创建数据库 271
15.3.2 实例5——查看数据库 271
15.3.3 实例6——删除数据库 272
15.3.4 实例7——选择数据库 272
15.4 MySQL数据表的基本操作 273
15.4.1 实例8——创建数据表 273
15.4.2 实例9——查看数据表结构 274
15.4.3 实例10——修改数据表结构 275
15.4.4 实例11——删除数据表 276
15.5 MySQL语句操作 276
15.5.1 实例12——插入记录 277
15.5.2 实例13——查询记录 277
15.5.3 实例14——修改记录 278
15.5.4 实例15——删除记录 278
15.6 MySQL数据库的备份与还原 278
15.6.1 实例16——数据备份 279
15.6.2 实例17——数据还原 285
15.7 高手甜点 287
15.8 跟我练练手 288
第16章 使用MySQL Workbench管理MySQL数据库 289
16.1 MySQL Workbench简介 290
16.1.1 MySQL Workbench概述 290
16.1.2 MySQL Workbench的优势 290
16.1.3 MySQL Workbench的安装 290
16.2 SQL Development的基本操作 293
16.2.1 创建数据库连接 293
16.2.2 创建新的数据库 294
16.2.3 创建和删除新的数据表 296
16.2.4 添加、修改表记录 299
16.2.5 查询表记录 299
16.2.6 修改表结构 300
16.3 Data Modeling的基本操作 301
16.3.1 建立E-R模型 301
16.3.2 导入E-R模型 305
16.4 Server Administration的基本操作 307
16.4.1 管理MySQL用户 307
16.4.2 备份MySQL数据库 310
16.4.3 还原MySQL数据库 313
16.5 高手甜点 314
16.6 跟我练练手 315
第17章 PHP操作MySQL数据库 317
17.1 PHP访问MySQL数据库的一般步骤 318
17.2 实例1——连接数据库前的准备工作 318
17.3 PHP操作MySQL数据库的函数 319
17.3.1 实例2——通过mysqli类库访问MySQL数据库 319
17.3.2 实例3——使用mysqli_connect()函数连接MySQL服务器 321
17.3.3 实例4——使用mysqli_select_db()函数选择数据库文件 322
17.3.4 实例5——使用mysqli_query()函数执行SQL语句 322
17.3.5 实例6——使用mysqli_fetch_assoc()函数从数组结果集中获取信息 322
17.3.6 实例7——使用mysqli_fetch_obiect()函数从结果中获取一行作为对象 323
17.3.7 实例8——使用mysqli_hum_rows()函数获取查询结果集中的记录数 323
17.3.8 实例9——使用mysqli_free_result()函数释放资源 323
17.3.9 实例10——使用mysqli_close()函数关闭连接 324
17.4 实例11——使用insert语句动态添加用户信息 324
17.5 实例12——使用select语句查询数据信息 326
17.6 高手甜点 328
17.7 跟我练练手 329
第4篇 高级应用 333
第18章 PDO数据库抽象类库 333
18.1 PDO概述 334
18.2 实例1——PDO的安装 334
18.3 使用PDO操作MySQ L 335
18.3.1 实例2——连接MySQL数据库的方法 335
18.3.2 实例3——使用PDO时的try catch错误处理结构 336
18.3.3 实例4——使用PDO执行SQL的选择语句 338
18.3.4 实例5——使用PDO获取返回数据的类方法 339
18.3.5 实例6——使用PDO执行SQL的添加、修改语句 341
18.3.6 实例7——使用PDO执行SQL的删除语句 342
18.4 实例8——PDO的prepare表述 343
18.5 高手甜点 344
18.6 跟我练练手 345
第19章 JavaScript编程基础 347
19.1 认识JavaScript 348
19.1.1 什么是JavaScript 348
19.1.2 JavaScript的特点 348
19.2 JavaScript在HTML中的使用 349
19.2.1 实例1——在HTML网页头中嵌入JavaScript代码 349
19.2.2 实例2——在HTML网页中嵌入JavaScript代码 350
19.2.3 实例3——在HTML网页的元素事件中嵌入JavaScript代码 351
19.2.4 实例4——在HTML中调用已经存在的JavaScript文件 352
19.2.5 实例5——通过JavaScript伪URL引入JavaScript脚本代码 353
19.3 JavaScript的基本语法 354
19.3.1 执行顺序 355
19.3.2 区分大小写 355
19.3.3 分号与空格 355
19.3.4 对代码行进行折行 355
19.3.5 实例6——注释 356
19.4 JavaScript的数据结构 357
19.4.1 标识符 357
19.4.2 关键字 358
19.4.3 保留字 358
19.4.4 常量 359
19.4.5 实例7——变量 359
19.5 看透代码中的数据类型 361
19.5.1 实例8——typeof运算符 362
19.5.2 实例9——Undefined类型 363
19.5.3 实例10——Null类型 363
19.5.4 实例11——Boolean类型 364
19.5.5 实例12——Number类型 365
19.5.6 实例13——String类型 366
19.6 条件判断语句 367
19.6.1 实例14——if语句 367
19.6.2 实例15——if…else语句 368
19.6.3 实例16——switch语句 369
19.7 循环控制语句 371
19.7.1 实例17——while语句 371
19.7.2 实例18——do…while语句 372
19.7.3 实例19——for循环 373
19.8 在PHP中调用JavaScript代码 374
19.8.1 实例20——验证表单元素的值是否为空 374
19.8.2 实例21——实现即时验证效果 375
19.9 实例22——制作树形菜单 377
19.10 高手甜点 381
19.11 跟我练练手 382
第20章 PHP与XML技术的综合应用 383
20.1 实例1——理解XML概念 384
20.2 XML语法基础 385
20.2.1 实例2——XML文档组成和声明 385
20.2.2 实例3——XML元素介绍 387
20.2.3 处理指令实体引用 389
20.2.4 实例4——XML命名空间 389
20.2.5 实例5——XML DTD 390
20.2.6 实例6——使用CDATA标签 391
20.3 实例7——将XML文档转换为HTML加以输出 392
20.4 实例8——在PHP中创建XML文档 392
20.5 使用SimpleXML扩展 393
20.5.1 实例9——创建SimpleXMLElement对象 393
20.5.2 实例10——访问特定节点元素和属性 395
20.5.3 实例11——添加XML元素和属性 396
20.6 实例12——动态创建XML文档 397
20.7 高手甜点 398
20.8 跟我练练手 398
第21章 PHP与Ajax的综合应用 399
21.1 Ajax概述 400
21.1.1 实例1——什么是Ajax 400
21.1.2 Ajax的关键元素 403
21.1.3 实例2——CSS与Ajax 403
21.2 Ajax快速入门 404
21.2.1 实例3—7全面剖析XMLHttpRequest对象 404
21.2.2 实例4——发出Ajax请求 406
21.2.3 实例5——处理服务器响应 408
21.3 实例6——在PHP中应用Ajax技术的应用 409
21.4 高手甜点 414
21.5 跟我练练手 415
第22章 MVC结构与Smarty模板 417
22.1 MVC概述 418
22.2 什么是模板引擎 419
22.3 Smarty概述 419
22.3.1 什么是Smarty 419
22.3.2 Smarty与MVC 420
22.4 Smarty的安装和配置 420
22.4.1 实例1——Smarty下载和安装 420
22.4.2 实例2——第一个Smarty程序 421
22.5 Smarty模板设计 422
22.5.1 Smarty模板文件 422
22.5.2 实例3——Smarty标识 422
22.5.3 实例4——Smarty变量 424
22.5.4 实例5——Smarty数组 425
22.5.5 实例6——Smarty中流程控制语句 426
22.6 高手甜点 428
22.7 跟我练练手 428
第23章 Zend Framework框架 429
23.1 什么是Zend Framework框架 430
23.2 Zend Framework的目录结构 430
23.3 Zend Framework的安装与测试 431
23.3.1 实例1——Zend Framework的安装 431
23.3.2 实例2——创建一个新的Zend Framework应用 431
23.4 PHP与Zend Framework的基本操作 434
23.4.1 实例3——在Zend Framework应用中创建控制层文件 434
23.4.2 实例4——在Zend Framework的控制层文件中添加一个action 435
23.4.3 实例5——在Zend Framework中创建布局(layout) 436
23.4.4 实例6——在Zend Framework中的数据库操作 437
23.4.5 实例7——在Zend Framework中创建表单 438
23.5 高手甜点 440
23.6 跟我练练手 440
第5篇 项目实战 443
第24章 开发论坛 443
24.1 网站的需求分析 444
24.1.1 需求分析 444
24.1.2 网站功能模块分析 444
24.2 数据库分析 444
24.2.1 分析数据库 445
24.2.2 创建数据表 445
24.3 论坛的代码实现 446
24.3.1 数据库连接相关文件 446
24.3.2 论坛主页面 452
24.3.3 新用户注册页面 456
24.3.4 论坛帖子的相关页面 459
24.3.5 后台管理系统的相关页面 469