第1篇 基础入门 3
第1章 揭开PHP的神秘面纱——我的第一个PHP程序 3
1.1认识PHP 4
1.1.1什么是PHP 4
1.1.2PHP的发展历程 4
1.1.3PHP语言的优势 5
1.2PHP7的新特征 5
1.3PHP服务器概述 7
1.4新手的福音——安装WampServer集成开发环境 8
1.5常用的开发利器 11
1.5.1PHP代码开发工具 11
1.5.2网页设计工具 12
1.5.3文本编辑工具 12
1.6案例实战——我的第一个PHP程序 13
1.7如何能学好PHP7 14
1.8疑难解惑 15
第2章 零基础开始学习——PHP的基本语法 17
2.1PHP语言标识风格 18
2.2熟悉编码规范 18
2.2.1什么是编码规范 19
2.2.2PHP的一些编码规范 19
2.3常量 21
2.3.1声明和使用常量 21
2.3.2使用系统预定义常量 21
2.4变量 23
2.4.1PHP中的变量声明 23
2.4.2可变变量和变量的引用 24
2.4.3变量作用域 25
2.4.4变量的销毁 27
2.5理解变量的类型 28
2.5.1什么是类型 28
2.5.2整型(integer) 29
2.5.3浮点型(float或double) 29
2.5.4布尔型(boolean) 29
2.5.5字符串型(string) 29
2.5.6数组型(array) 30
2.5.7对象型(object) 32
2.5.8NULL型 32
2.5.9资源类型(Resource) 32
2.5.10数据类型之间的相互转换 32
2.6PHP7的新变化——声明标量类型和函数返回值类型 33
2.7使用运算符 35
2.7.1算术运算符 35
2.7.2字符串连接符 36
2.7.3赋值运算符 36
2.7.4比较运算符 37
2.7.5逻辑运算符 38
2.7.6按位运算符 38
2.7.7否定控制运算符 39
2.7.8错误控制运算符 39
2.7.9三元运算符 39
2.7.10运算符的优先级和结合规则 39
2.8PHP7的新变化——合并运算符和组合运算符 40
2.9PHP中的表达式 40
2.10案例实战——创建多维数组 41
2.11疑难解惑 42
第3章 实现定制功能——函数的应用 43
3.1认识函数 44
3.2内置函数 44
3.2.1数学函数 44
3.2.2变量相关的函数 45
3.3自定义函数 46
3.3.1定义和调用函数 46
3.3.2向函数传递参数值 47
3.3.3向函数传递参数引用 48
3.3.4从函数中返回值 48
3.3.5引用函数 49
3.3.6取消函数引用 50
3.3.7变量函数 50
3.4PHP7的新变化——新增intdiv()函数 51
3.5包含文件 51
3.5.1require和include 52
3.5.2include_once和require_once 52
3.6疑难解惑 53
第4章 程序的执行方向——程序控制结构 55
4.1流程控制概述 56
4.2条件控制结构 56
4.2.1单一条件分支结构(if语句) 56
4.2.2双向条件分支结构(if…else语句) 57
4.2.3多向条件分支结构(elseif语句) 57
4.2.4多向条件分支结构(switch语句) 58
4.3循环控制结构 60
4.3.1while循环语句 60
4.3.2do…while循环语句 60
4.3.3for循环语句 61
4.3.4foreach循环语句 62
4.3.5流程控制的另一种书写格式 62
4.3.6使用break/continue语句跳出循环 64
4.4案例实战1——条件分支结构的应用 65
4.5案例实战2——循环控制结构的应用 66
4.6疑难解惑 67
第5章 不可不说的文本数据——字符串 69
5.1字符串的单引号和双引号 70
5.2字符串的连接符 71
5.3字符串的基本操作 72
5.3.1手动和自动转义字符串中的字符 72
5.3.2计算字符串的长度 72
5.3.3字符串单词统计 73
5.3.4清理字符串中的空格 74
5.3.5字符串的切分与组合 74
5.3.6字符串子串的截取 75
5.3.7字符串子串的替换 76
5.3.8字符串查找 77
5.4疑难解惑 77
第6章 匹配文本有妙招——正则表达式 79
6.1什么是正则表达式 80
6.2正则表达式的语法规则 80
6.2.1方括号([]) 80
6.2.2连字符(-) 80
6.2.3点号字符(.) 80
6.2.4限定符(+*?{n,m}) 81
6.2.5行定位符(^和S) 81
6.2.6排除字符([^]) 81
6.2.7括号字符(()) 81
6.2.8选择字符(|) 81
6.2.9转义字符与反斜杠 81
6.2.10认证E-mail的正则表达式 82
6.3Perl兼容正则表达式函数 82
6.3.1使用正则表达式对字符串进行匹配 82
6.3.2使用正则表达式替换字符串的子串 84
6.3.3使用正则表达式切分字符串 85
6.4案例实战——创建商品在线订单页面 85
6.5疑难解惑 89
第2篇 核心技术 93
第7章 特殊的元素集合——数组 93
7.1什么是数组 94
7.2数组类型 94
7.2.1数字索引数组 94
7.2.2关联索引数组 95
7.3数组的结构 95
7.3.1一维数组 96
7.3.2多维数组 96
7.4遍历数组 98
7.4.1遍历一维数字索引数组 98
7.4.2遍历一维关联索引数组 98
7.4.3遍历多维数组 99
7.5数组排序 100
7.5.1一维数组排序 100
7.5.2多维数组排序 102
7.6字符串与数组的转换 103
7.7向数组中添加和删除元素 104
7.7.1向数组中添加元素 104
7.7.2从数组中删除元素 105
7.8查询数组中的指定元素 106
7.9统计数组元素的个数 108
7.10删除数组中重复的元素 109
7.11调换数组中的键值和元素值 110
7.12数组的序列化 111
7.13疑难解惑 112
第8章 表单的动态效果——PHP与Web页面交互 113
8.1创建动态内容 114
8.2表单与PHP 114
8.3设计表单元素 115
8.3.1表单的基本结构 115
8.3.2文本框 115
8.3.3复选框 116
8.3.4单选按钮 118
8.3.5下拉列表 119
8.3.6重置按钮和提交按钮 120
8.4传递数据 123
8.4.1用POST方式传递数据 123
8.4.2用GET方式传递数据 123
8.5PHP获取表单传递数据的方法 124
8.6PHP对URL传递的参数进行编码 125
8.7案例实战——团购商品订单表 126
8.8疑难解惑 127
第9章 时间很重要——管理日期和时间 129
9.1系统时区的设置 130
9.1.1时区划分 130
9.1.2时区设置 130
9.2PHP的日期和时间函数 130
9.2.1关于Unix时间戳 130
9.2.2获取当前的时间戳 131
9.2.3获取当前的日期和时间 131
9.2.4使用时间戳获取日期信息 132
9.2.5检验日期的有效性 135
9.2.6输出格式化时间戳的日期和时间 135
9.2.7显示本地化的日期和时间 137
9.2.8将日期和时间解析为Unix时间戳 138
9.2.9日期时间在PHP和MySQL数据格式之间转换 138
9.3案例实战1——实现倒计时功能 139
9.4案例实战2——比较两个时间的大小 139
9.5疑难解惑 140
第10章 保持HTTP连接状态——Cookie和会话管理 141
10.1Cookie的基本操作 142
10.1.1什么是Cookie 142
10.1.2创建Cookie 142
10.1.3读取Cookie 143
10.1.4删除Cookie 144
10.2认识Session 145
10.2.1什么是Session 145
10.2.2Session的基本功能 146
10.2.3Cookie与Session 146
10.2.4储存Session ID在Cookie或URL中 146
10.3会话管理 146
10.3.1创建会话 146
10.3.2注册会话变量 147
10.3.3使用会话变量 148
10.3.4注销和销毁会话变量 148
10.4案例实战——综合应用会话管理 149
10.5疑难解惑 150
第11章 设计图形图像——GD绘图与图像处理 151
11.1在PHP中加载GD库 152
11.2图形图像的典型应用案例 154
11.2.1创建一个简单的图像 155
11.2.2使用GD2的函数在图片上添加文字 156
11.2.3使用TrueType字体处理中文生成图片 157
11.3Jpgraph库的基本操作 159
11.3.1Jpgraph的安装 160
11.3.2Jpgraph的配置 160
11.4案例实战1——制作圆形统计图 161
11.5案例实战2——制作3D饼形统计图 163
11.6疑难解惑 164
第12章 不可避免的问题——错误处理和异常处理 167
12.1常见的错误和异常 168
12.2错误处理 171
12.2.1php.ini中的错误处理机制 171
12.2.2应用DIE语句来调试 172
12.2.3自定义错误和错误触发器 172
12.2.4错误记录 175
12.3PHP7新变化——改变了错误的报告方式 176
12.4异常处理 177
12.4.1异常的基本处理方法 177
12.4.2自定义的异常处理器 179
12.4.3处理多个异常 180
12.4.4设置顶层异常处理器 181
12.5案例实战——处理异常或错误 182
12.6疑难解惑 183
第13章 与外界的交流——操作文件与目录 185
13.1查看文件和目录 186
13.1.1查看文件名称 186
13.1.2查看目录名称 186
13.1.3查看文件真实目录 187
13.2查看文件信息 187
13.2.1查看文件的类型 187
13.2.2查看文件的访问和修改时间 188
13.3文件操作 188
13.3.1打开文件和关闭文件 189
13.3.2读取文件 190
13.3.3文件数据写入 191
13.3.4重命名和移动文件 193
13.3.5复制文件 193
13.3.6删除文件 194
13.4目录操作 194
13.5上传文件 198
13.5.1全局变量$FILES 198
13.5.2文件上传 199
13.6案例实战——编写访客计数器 201
13.7疑难解惑 202
第14章 主流的编程思想——面向对象编程 203
14.1类和对象的介绍 204
14.2类的基本操作 205
14.2.1类的声明 205
14.2.2成员属性 205
14.2.3成员方法 206
14.2.4类的实例化 206
14.2.5访问类中的成员属性和方法 207
14.3构造方法和析构方法 208
14.4访问器 210
14.5类的继承 211
14.6抽象类和接口 212
14.6.1抽象类 212
14.6.2接口 213
14.7面向对象的多态性 215
14.7.1通过继承实现多态 215
14.7.2通过接口实现多态 216
14.8PHP7的新变化——支持匿名类 217
14.9疑难解惑 218
第15章 提升网站安全的武器——PHP加密技术 219
15.1使用PHP加密函数 220
15.1.1实例1——使用md5()函数进行加密 220
15.1.2实例2——使用crypt()函数进行加密 220
15.1.3实例3——使用sha1()函数进行加密 222
15.2使用PHP加密扩展库 222
15.2.1实例4——安装和使用Mcrypt扩展库 222
15.2.2实例5——使用Mhash扩展库 224
15.3疑难解惑 226
第3篇 高级技能 229
第16章 管理MySQL的利器——phpMyAdmin操作MySQL数据库 229
16.1什么是MySQL 230
16.1.1客户-服务器软件 230
16.1.2数据库的原理 230
16.1.3MySQL版本 231
16.1.4MySQL的优势 232
16.2创建MySQL数据库和数据表 232
16.2.1启动phpMyAdmin管理程序 232
16.2.2创建数据库 233
16.2.3认识数据表的字段 234
16.2.4创建数据表 236
16.2.5添加数据 238
16.3加密MySQL数据库 239
16.3.1MySQL数据库的安全问题 239
16.3.2为MySQL管理账号加上密码 240
16.4数据库的备份与还原 241
16.4.1数据库的备份 241
16.4.2数据库的还原 242
16.5疑难解惑 243
第17章 数据库编程——MySQL数据库与SQL查询 245
17.1安装与配置MySQL5.7 246
17.1.1安装MySQL5.7 246
17.1.2配置MySQL5.7 248
17.2启动服务并登录MySQL数据库 251
17.2.1启动MySQL服务 251
17.2.2登录MySQL数据库 252
17.3MySQL数据库的基本操作 254
17.3.1创建数据库 254
17.3.2查看数据库 254
17.3.3删除数据库 255
17.3.4选择数据库 255
17.4MySQL数据表的基本操作 256
17.4.1创建数据表 256
17.4.2查看数据表的结构 257
17.4.3修改数据表结构 258
17.4.4删除数据表 259
17.5MySQL语句的操作 259
17.5.1插入记录 259
17.5.2查询记录 260
17.5.3修改记录 261
17.5.4删除记录 261
17.6MySQL数据库的备份与还原 261
17.6.1数据备份 261
17.6.2数据还原 268
17.7疑难解惑 270
第18章 最经典的方法——使用MySQLi操作MySQL 271
18.1PHP访问MySQL数据库的一般步骤 272
18.2连接数据库前的准备工作 272
18.3PHP操作MySQL数据库 273
18.3.1连接MySQL服务器 273
18.3.2选择数据库 274
18.3.3创建数据库 275
18.3.4创建数据表 276
18.3.5添加数据 278
18.3.6一次插入多条数据 279
18.3.7读取数据 281
18.3.8释放资源 282
18.3.9关闭连接 282
18.4案例实战1——动态添加员工信息 283
18.5案例实战2——动态查询数据信息 284
18.6提升安全性——防止SQL注入的攻击 286
18.7疑难解惑 287
第19章 最兼容的方法——使用PDO操作MySQL数据库 289
19.1认识PDO 290
19.2PDO的安装 290
19.3使用PDO操作MySQL 291
19.3.1连接MySQL数据库 292
19.3.2创建数据库 293
19.3.3创建数据表 294
19.3.4添加数据 295
19.3.5一次插入多条数据 296
19.3.6读取数据 296
19.4提升安全性——防止SQL注入的攻击 298
19.5疑难解惑 299
第20章 跨平台的数据通信——PHP与XML技术 301
20.1理解XML概念 302
20.2XML语法基础 303
20.2.1XML文档组成和声明 303
20.2.2XML元素介绍 304
20.2.3处理指令实体引用 306
20.2.4XML命名空间 307
20.2.5XML DTD 308
20.2.6使用CDATA标签 309
20.3将XML文档转换为HTML加以输出 309
20.4在PHP中创建XML文档 310
20.5使用SimpleXML扩展 310
20.5.1创建SimpleXMLElement对象 310
20.5.2访问特定节点元素和属性 312
20.5.3添加XML元素和属性 312
20.6案例实战——动态创建XML文档 313
20.7疑难解惑 314
第21章 异步通信更高效——PHP与Ajax技术 315
21.1Ajax概述 316
21.1.1什么是Ajax 316
21.1.2Ajax的工作过程 319
21.1.3Ajax的关键元素 319
21.1.4CSS与AjAjax 320
21.2Ajax的核心技术 320
21.2.1全面剖析XMLHttpRequest对象 320
21.2.2发出Ajax请求 322
21.2.3处理服务器响应 324
21.3案例实战1——应用Ajax技术检查用户名 325
21.4案例实战2——应用Ajax技术实现投票功能 328
21.5疑难解惑 331
第22章 增强PHP的功能——PHP与jQuery技术 333
22.1jQuery概述 334
22.1.1jQuery能做什么 334
22.1.2jQuery的特点 334
22.1.3jQuery的技术优势 335
22.2下载并配置jQuery 337
22.2.1下载jQuery 337
22.2.2配置jQuery 339
22.3我的第一个jQuery程序 339
22.3.1开发前的一些准备工作 339
22.3.2具体的程序开发 340
22.4jQuery选择器 340
22.4.1jQuery的工厂函数 340
22.4.2常见选择器 341
22.5jQuery控制页面 343
22.6jQuery的事件处理 344
22.6.1页面加载响应事件 344
22.6.2事件捕获与事件冒泡 345
22.7jQuery的动画效果 346
22.8案例实战——PHP与jQuery技术的应用 347
22.9疑难解惑 349
第23章 灵活而强大的框架——Zend Frame-work框架 351
23.1什么是Zend Framework框架 352
23.2Zend Framework的目录结构 352
23.3Zend Framework的安装与测试 353
23.3.1实例1——Zend Framework的安装 353
23.3.2实例2——创建一个新的ZendFramework应用 353
23.4PHP与Zend Framework的基本操作 356
23.4.1实例3——在Zend Framework应用中创建控制层文件 356
23.4.2实例4——在Zend Framework的控制层文件中添加一个action 357
23.4.3实例5——在Zend Framework中创建布局(layout) 358
23.4.4实例6——在Zend Framework中的数据库操作 359
23.4.5实例7——在Zend Framework中创建表单 360
23.5疑难解惑 362
第4篇 项目实战 365
第24章 项目实训1——开发验证码系统 365
24.1系统分析 366
24.1.1学习目标 366
24.1.2需求分析 366
24.1.3系统文档 366
24.2系统的代码实现 367
24.2.1系统主界面 367
24.2.2生成并输入验证码功能 368
24.2.3验证码控制器 369
24.3系统测试 371
第25章 项目实训2——开发个人博客系统 373
25.1系统的需求分析 374
25.1.1学习目标 374
25.1.2需求分析 374
25.1.3系统文档 374
25.2数据库分析 375
25.2.1分析数据库 375
25.2.2创建数据表 375
25.3个人博客系统的代码实现 376
25.3.1博客数据模型的文件 376
25.3.2个人博客系统的主页面 380
25.3.3个人博客新建和编辑页面 382
25.3.4个人博客删除页面 384
25.4系统测试 385
第26章 项目实训3——开发用户权限系统 387
26.1必备知识 388
26.2系统的需求分析 389
26.2.1学习目标 389
26.2.2需求分析 389
26.2.3系统文档 389
26.3数据库分析 390
26.3.1分析数据库 390
26.3.2创建数据表 391
26.4用户权限系统的代码实现 393
26.4.1系统入口文件 393
26.4.2页面控制器 393
26.4.3用户登录页面 395
26.4.4数据模型的文件 397
26.4.5用户数据模型页面 399
26.4.6角色数据模型页面 401
26.4.7权限数据模型页面 402
26.4.8权限显示页面 403
26.5系统测试 404
第27章 项目实训4——开发社区市场系统 407
27.1必备知识 408
27.2系统的需求分析 408
27.2.1学习目标 408
27.2.2需求分析 409
27.2.3系统文档 409
27.3还原数据库 410
27.4社区市场系统的代码实现 411
27.4.1系统入口文件 411
27.4.2项目配置文件 411
27.4.3物品与需求展示控制器 414
27.4.4用户后台控制器 434
27.4.5数据模型的文件 448
27.5系统测试 450