第1章 PHP概述 1
1.1 PHP的发展历史 2
1.1.1 PHP 1 2
1.1.2 PHP2 2
1.1.3 PHP3 2
1.1.4 PHP4 2
1.1.5 PHP5 3
1.1.6 PHP5.3~PHP5.6 3
1.1.7 PHP7 3
1.2 PHP的特性 4
1.3 PHP7新特性 4
1.3.1新增的特性 4
1.3.2废除的特性 4
1.3.3移除的扩展 5
1.3.4移除的SAPI 5
1.4 PHP的应用 5
1.5 PHP框架 6
1.6 PHP开源项目 7
1.7 PHP现状 8
1.8 PHP发展趋势 8
1.9 PHP学习资源 9
1.9.1开发工具 9
1.9.2 PHP参考手册 9
1.9.3网上资源 10
第2章 安装和配置PHP运行环境 11
2.1安装Apache+PHP+MySQL工具包 12
2.2手动安装和配置PHP运行环境 14
2.2.1安装Apache 15
2.2.2安装PHP 16
2.2.3配置Apache 17
2.2.4配置PHP 19
2.2.5启动Apache服务 19
2.2.6测试PHP 22
第3章 PHP语言基础 23
3.1 PHP基本语法 24
3.1.1 PHP标记 24
3.1.2 PHP注释 25
3.1.3 PHP指令分隔符 26
3.2 PHP数据类型 26
3.2.1标量类型 26
3.2.2复合类型 30
3.2.3特殊类型 31
3.2.4类型转换 32
3.2.5检测数据类型 34
3.3 PHP变量和常量 35
3.3.1使用变量 35
3.3.2取消引用 36
3.3.3可变变量 36
3.3.4预定义变量 36
3.3.5声明常量 37
3.3.6使用常量 38
3.3.7预定义常量 38
3.4 PHP运算符 39
3.4.1算术运算符 39
3.4.2赋值运算符 39
3.4.3字符串运算符 40
3.4.4位运算符 40
3.4.5比较运算符 41
3.4.6逻辑运算符 41
3.4.7错误控制运算符 42
3.4.8其他运算符 42
3.4.9运算符的优先级和结合方向 43
3.5 PHP表达式 44
3.6 PHP语句 44
3.6.1 if语句 44
3.6.2 else语句 45
3.6.3 elseif语句 46
3.6.4 switch语句 48
3.6.5 while语句 50
3.6.6 do-while语句 51
3.6.7 for语句 52
3.6.8 foreach语句 53
3.6.9流程控制的特殊格式 53
3.6.10 break语句 54
3.6.11 continue语句 55
3.6.12 goto语句 56
3.6.13 include和require语句 56
3.7 PHP函数 57
3.7.1定义和调用函数 57
3.7.2函数的参数 58
3.7.3函数的返回值 60
3.7.4可变函数 61
3.7.5匿名函数 61
3.7.6变量作用域 62
3.8 PHP编码规范 63
3.8.1命名规范 64
3.8.2版式规范 64
3.8.3注释规范 64
3.9案例实战 64
3.9.1打印金字塔 64
3.9.2设计杨辉三角 66
3.9.3设计简单的计数器 68
3.10课后练习 69
第4章 操作字符串 70
4.1认识字符串 71
4.2定义字符串 71
4.2.1单引号 71
4.2.2双引号 71
4.2.3 Heredoc结构 72
4.2.4 Nowdoc结构 72
4.3使用字符串 73
4.3.1连接字符串 73
4.3.2去除首尾空字符 74
4.3.3转义、还原字符串 75
4.3.4获取字符串长度 77
4.3.5截取字符串 77
4.3.6比较字符串 78
4.3.7检索字符串 80
4.3.8替换字符串 81
4.3.9格式化字符串 82
4.3.10分割字符串 85
4.3.11合成字符串 86
4.4案例实战 86
4.4.1查找字符串的公共前缀 86
4.4.2 URL字符串的处理 87
4.4.3表单字符串的处理 90
4.5课后练习 92
第5章 使用正则表达式 93
5.1认识正则表达式 94
5.2正则表达式基本语法 94
5.2.1行定界符 95
5.2.2单词定界符 95
5.2.3字符类 95
5.2.4选择符 96
5.2.5范围符 96
5.2.6排除符 97
5.2.7限定符 97
5.2.8任意字符 98
5.2.9转义字符 98
5.2.10反斜杠 98
5.2.11小括号 99
5.2.12反向引用 100
5.2.13模式修饰符 100
5.3使用PCRE扩展正则表达式函数 101
5.3.1数组过滤 101
5.3.2执行一次匹配 102
5.3.3执行所有匹配 103
5.3.4转义字符 104
5.3.5查找替换 105
5.3.6高级查找替换 106
5.3.7分隔字符串 106
5.4案例实战 107
5.4.1验证电话号码 107
5.4.2验证Email地址 109
5.4.3验证IP地址 110
5.4.4统计关键字 111
5.4.5检测上传文件类型 112
5.4.6验证邮政编码 112
5.5课后练习 114
第6章 操作数组 115
6.1认识PHP数组 116
6.2数组类型 116
6.2.1索引数组 116
6.2.2关联数组 117
6.3定义数组 118
6.3.1定义简单数组 118
6.3.2定义多维数组 120
6.4使用数组 122
6.4.1输出数组 122
6.4.2统计元素个数 122
6.4.3遍历数组 123
6.4.4数组与字符串的转换 124
6.4.5数组排序 125
6.4.6数组指针 127
6.5操作元素 128
6.5.1查询指定元素 128
6.5.2获取最后一个元素 128
6.5.3添加元素 129
6.5.4删除重复元素 129
6.6案例实战 130
6.6.1定义特殊形式的数组 130
6.6.2设计购物车 131
6.6.3设计多文件上传 133
6.7课后练习 135
第7章 使用PHP与网页交互 136
7.1定义表单 137
7.1.1设计表单结构 137
7.1.2设置表单属性 137
7.1.3使用表单对象 137
7.2 PHP数据交互基础 137
7.2.1定义数据传输类型 137
7.2.2定义表单提交方法 138
7.2.3认识查询字符串 139
7.2.4设置PHP处理程序 139
7.2.5 PHP接收表单数据的方法 140
7.2.6在表单中嵌入PHP脚本 140
7.3案例实战 141
7.3.1获取文本框的值 141
7.3.2获取复选框的值 142
7.3.3获取下拉菜单的值 143
7.3.4获取列表框的值 144
7.3.5获取密码域和隐藏域的值 145
7.3.6获取单选按钮的值 146
7.3.7获取文件域的值 148
7.3.8获取查询字符串的值 149
7.3.9对查询字符串进行编码 150
7.3.10对查询字符串进行解码 151
7.3.11综合实战:个人信息登记与处理 152
7.4课后练习 154
第8章PHP日期和时间处理 155
8.1设置系统时区 156
8.1.1认识时区 156
8.1.2配置系统时间 157
8.2使用PHP日期和时间 157
8.2.1获得本地化时间戳 157
8.2.2获取当前时间戳 158
8.2.3获取当前日期和时间 159
8.2.4获取日期信息 162
8.2.5检验日期 163
8.2.6格式化的日期和时间 163
8.2.7显示本地日期和时间 165
8.2.8转换为UNIX时间戳 168
8.3案例实战 170
8.3.1比较时间大小 170
8.3.2设计倒计时 170
8.3.3计算脚本执行时间 173
8.3.4合计时间 174
8.3.5修改时间 175
8.3.6计算间隔日期 176
8.4课后练习 179
第9章 PHP会话处理 180
9.1认识PHP会话机制 181
9.1.1为什么要使用会话 181
9.1.2 PHP会话的方式 181
9.2使用Cookie 181
9.2.1认识Cookie 182
9.2.2创建Cookie 182
9.2.3读取Cookie 184
9.2.4删除Cookie 184
9.2.5 Cookie的生命周期 185
9.3使用Session 186
9.3.1认识Session 186
9.3.2启动会话 186
9.3.3注册和读取会话 187
9.3.4注销和销毁会话 188
9.3.5传递会话 189
9.3.6设置会话有效期 190
9.4案例实战 192
9.4.1控制登录时间 192
9.4.2自动登录 193
9.4.3限制访问时间 195
9.4.4用户注册 196
9.4.5用户权限管理 198
9.4.6防刷计数器 200
9.4.7跨页访问会话信息 201
9.4.8设置页面访问权限 203
9.4.9设计网页皮肤 204
9.4.10管理缓存 206
9.5课后练习 207
第10章 PHP图形图像处理 208
10.1认识GD库 209
10.1.1加载GD库 209
10.1.2 GD库的基本用法 210
10.1.3创建第一个图像 210
10.2使用GD绘图 211
10.2.1绘制基本几何图形 211
10.2.2填充图形 213
10.2.3在图像中添加文字 216
10.2.4生成验证码 218
10.2.5导入外部图像 220
10.2.6为图片添加文字水印 221
10.2.7为图片添加图像水印 223
10.2.8设计折线图 226
10.3认识JpGraph 228
10.3.1安装JpGraph 228
10.3.2配置JpGraph 229
10.4使用JpGraph绘图 229
10.4.1设计柱状图 230
10.4.2设计比较柱状图 232
10.4.3设计圆柱图 232
10.4.4设计柱状组图 233
10.4.5设计折线瀑布图 233
10.4.6设计折线图 234
10.4.7设计柱状和折线混合图 234
10.4.8设计饼形图 235
10.4.9设计强调饼形图 235
10.4.10设计分割饼形图 236
10.4.11设计圆饼图 236
10.4.12设计环饼图 237
10.4.13设计雷达图 237
10.4.14设计表格图 238
10.5案例实战 238
10.5.1图形计数器 239
10.5.2 GD2计数器 241
10.5.3生成缩略图 242
10.5.4调整图片大小 242
10.6课后练习 243
第11章 PHP文件系统处理 244
11.1操作文件 245
11.1.1打开和关闭文件 245
11.1.2读取文件内容 246
11.1.3写入文件内容 250
11.1.4编辑文件 251
11.2操作目录 252
11.2.1打开和关闭目录 252
11.2.2浏览目录 253
11.2.3编辑目录 253
11.3远程操作文件 254
11.3.1远程访问 254
11.3.2远程定位和查询 255
11.3.3文件锁定 256
11.4远程文件上传 257
11.4.1初始化配置参数 257
11.4.2设置预定义变量$FILES 258
11.4.3上传文件 259
11.5案例实战 260
11.5.1文件操作模块 260
11.5.2检测目录和文件 265
11.5.3访问目录和文件属性 266
11.5.4获取文件扩展名 268
11.5.5获取文件权限 270
11.5.6跟踪文件变动信息 272
11.5.7读取远程文件数据 272
11.5.8管理指定类型文件 273
11.5.9目录操作模块 273
11.5.10重命名目录 274
11.5.11查看磁盘分区信息 274
11.5.12分页读取文本文件 275
11.5.13限制上传文件大小 275
11.5.14限制上传文件类型 276
11.5.15 同时上传多个文件 276
11.6课后练习 277
第12章PHP面向对象程序设计 278
12.1认识面向对象编程 279
12.1.1设计原则和目标 279
12.1.2面向对象的编程优势 279
12.1.3类和对象 279
12.1.4类成员 280
12.1.5类的基本特性 281
12.2使用类 281
12.2.1定义类 281
12.2.2定义成员方法 282
12.2.3实例化对象 283
12.2.4定义成员变量 284
12.2.5定义类常量 285
12.2.6定义构造函数 285
12.2.7定义析构函数 286
12.2.8类的继承 287
12.2.9类的多态 288
12.2.10使用$this 289
12.2.11使用:: 290
12.2.12访问控制 291
12.2.13使用静态变量和静态方法 293
12.2.14使用final关键字 295
12.2.15 定义抽象类 295
12.2.16使用接口 296
12.3使用对象 297
12.3.1克隆对象 297
12.3.2比较对象 299
12.3.3检测对象类型 299
12.4使用魔术方法 300
12.4.1___set()和___get()方法 300
12.4.2___call()方法 301
12.4.3___sleep()和___wakeup()方法 301
12.4.4 ___toString()方法 302
12.4.5 ___autoload()方法 303
12.4.6 ___invoke()方法 303
12.5案例实战 304
12.5.1设计需求 304
12.5.2程序设计 304
12.5.3代码实现 305
12.5.4应用类 308
12.6课后练习 308
第13章 安装和使用MySQL 309
13.1安装MySQL 310
13.1.1认识MySQL 310
13.1.2 MySQL特性 310
13.1.3安装MySQL 311
13.1.4配置MySQL 317
13.2使用MySQL服务器 318
13.2.1启动MySQL服务器 318
13.2.2连接和断开MySQL服务器 318
13.2.3停止MySQL服务器 318
13.3 MySQL命令行数据库 318
13.3.1创建数据库 319
13.3.2查看数据库 319
13.3.3选择数据库 319
13.3.4删除数据库 319
13.4 MySQL命令行数据表 319
13.4.1创建数据表 319
13.4.2查看数据表结构 320
13.4.3修改数据表结构 320
13.4.4重命名数据表 320
13.4.5删除数据表 320
13.5 MySQL命令行语句 320
13.5.1插入记录 320
13.5.2查询记录 321
13.5.3更新记录 321
13.5.4删除记录 321
13.6 MySQL备份和恢复 322
13.6.1备份数据 322
13.6.2恢复数据 322
第14章 使用phpMyAdmin管理MySQL 323
14.1安装和配置phpMyAdmin 324
14.1.1为什么使用phpMyAdmin 324
14.1.2安装phpMyAdmin 324
14.1.3配置phpMyAdmin 326
14.2管理账户和权限 326
14.2.1登录phpMyAdmin 327
14.2.2添加用户和权限 328
14.2.3创建数据库 328
14.2.4关联用户和数据库 330
14.3管理数据库 330
14.3.1检查和修改数据库 330
14.3.2修复数据库 331
14.3.3备份数据库 333
14.3.4导入数据库 334
14.4案例实战:设计简单的数据库 336
14.5课后练习 336
第15章 使用PHP操作MySQL 337
15.1 PHP与MySQL通信 338
15.1.1 PHP联系MySQL的方式 338
15.1.2 PHP访问数据库的一般步骤 338
15.2使用mysqli扩展 339
15.3使用mysqli类 340
15.3.1启用mysqli扩展模块 340
15.3.2连接MySQL服务器 340
15.3.3处理连接错误报告 342
15.3.4关闭与MySQL服务器连接 342
15.3.5执行SQL命令 343
15.4使用mysqli_result类 344
15.4.1创建结果集对象 344
15.4.2回收查询内存 345
15.4.3从结果集中解析数据 345
15.4.4从结果集中获取数据列的信息 348
15.4.5一次执行多条SQL命令 349
15.5使用mysqli_stmt类 350
15.5.1获取预处理语句对象 350
15.5.2绑定参数 350
15.5.3执行准备好的语句 351
15.5.4回收资源 351
15.5.5案例实战 352
15.5.6使用预处理语句处理SELECT查询结果 353
15.6使用事务 355
15.6.1事务处理 355
15.6.2案例实战 356
15.7案例实战:设计电子公告牌 357
15.7.1添加公告 357
15.7.2查询公告 359
15.7.3更新公告 361
15.7.4删除公告 363
15.7.5分页显示 364
15.8课后练习 366
第16章 使用PDO操作数据库 367
16.1认识PDO 368
16.1.1历史背景 368
16.1.2为什么要使用PDO 368
16.1.3 PDO特性 368
16.1.4配置PDO 369
16.2连接数据库 370
16.2.1建立连接 370
16.2.2处理异常 371
16.2.3关闭连接 371
16.2.4建立持久连接 372
16.3执行SQL语句 372
16.3.1 exec()方法 372
16.3.2 query()方法 373
16.3.3预处理语句 374
16.4预处理语句 374
16.4.1认识PDO预处理 374
16.4.2定义预处理语句 375
16.4.3绑定值和变量 375
16.4.4执行SQL命令 378
16.4.5获取查询数据 378
16.5获取结果集 378
16.5.1 fetch()方法 378
16.5.2 fetchAll()方法 380
16.5.3 fetchColumn()方法 381
16.6获取SQL错误信息 382
16.6.1使用默认模式 382
16.6.2使用警告模式 383
16.6.3使用异常模式 384
16.7处理错误 385
16.7.1 errorCode()方法 386
16.7.2 errorInfo()方法 387
16.8事务处理 388
16.8.1认识事务 388
16.8.2使用事务处理 389
16.9存储过程 390
16.9.1创建存储过程 390
16.9.2调用存储过程 392
16.10课后练习 393
第17章 PHP加密技术 394
17.1认识PHP加密技术 395
17.2使用内置加密函数 395
17.2.1 md5()加密函数 396
17.2.2 crypt()加密函数 396
17.2.3 shal()加密函数 398
17.2.4 Base64加密函数 399
17.2.5 URL加密函数 400
17.3 PHP加密扩展库 401
17.3.1 Mcrypt和OpenSSL扩展库 402
17.3.2 Mhash扩展库 402
17.4案例实战 403
17.5课后练习 405
第18章 PHP与JavaScript技术 406
18.1认识JavaScript 407
18.1.1 JavaScript的优势 407
18.1.2 JavaScript与PHP基本用法比较 407
18.2使用PHP输出JavaScript代码 407
18.3 PHP与JavaScript相互传值 408
18.3.1 PHP给JavaScript变量赋值 408
18.3.2 HTML超链接传值 408
18.3.3 JavaScript给PHP变量赋值 409
18.4案例实战:PHP+JavaScript表单验证 410
18.4.1 PHP表单验证 410
18.4.2 JavaScript表单验证 411
18.5课后练习 414
第19章 PHP与XML技术 415
19.1认识XML 416
19.2使用PHP创建XML 417
19.3了解PHP的XML解析器 417
19.4使用SimpleXML 418
19.4.1创建S impleXML对象 418
19.4.2遍历所有子元素 420
19.4.3遍历所有属性 420
19.4.4访问特定元素和属性 421
19.4.5修改XML数据 422
19.4.6保存XML文档 423
19.5案例实战 424
19.5.1动态创建XML文档 424
19.5.2使用Ajax读取XML文档信息 424
19.5.3设计实时搜索 425
19.5.4设计RSS阅读器 426
19.6课后练习 426
第20章 PHP与Ajax技术 427
20.1 XMLHttpRequest 1.0基础 428
20.1.1定义XMLHttpRequest对象 428
20.1.2建立XMLHttpRequest连接 428
20.1.3跟踪状态 428
20.1.4中止请求 429
20.1.5获取XML数据 430
20.1.6获取HTML文本 431
20.1.7获取JavaScript脚本 431
20.1.8获取JSON数据 432
20.1.9获取纯文本 433
20.1.10获取头部信息 433
20.2 XMLHttpRequest 2.0基础 434
20.2.1请求时限 434
20.2.2 FormData数据对象 434
20.2.3上传文件 435
20.2.4跨域访问 435
20.2.5响应不同类型数据 435
20.2.6接收二进制数据 435
20.2.7监测数据传输进度 436
20.3案例实战 437
20.3.1发送字符串 437
20.3.2发送表单数据 437
20.3.3发送二进制文件 437
20.3.4发送Blob对象 437
20.3.5跨域请求 438
20.3.6设计文件上传进度条 438
20.4课后练习 438
第21章 PHP与Socket技术 439
21.1认识WebSocket 440
21.1.1 WebSocket基础 440
21.1.2 WebSockets API开发框架 440
21.1.3浏览器兼容性 441
21.1.4应用场景 441
21.2在PHP中使用Socket 441
21.2.1启动socket 441
21.2.2 PHP套接字通信流程 442
21.2.3 PHP套接字通信方法 443
21.2.4案例:设计第一个套接字连接 445
21.2.5案例:处理多个连接 447
21.3使用WebSocket 450
21.3.1在客户端定义Socket对象 450
21.3.2设计简单的“呼-应”通信 451
21.3.3发送JSON对象 452
21.3.4使用Workennan框架通信 453
21.3.5推送信息 454
21.4课后练习 455
第22章 PHP错误和异常处理 456
22.1错误处理 457
22.1.1认识PHP错误处理 457
22.1.2使用die()函数 457
22.1.3自定义错误处理器 458
22.1.4触发错误 459
22.1.5错误记录 460
22.2异常处理 461
22.2.1认识PHP异常 461
22.2.2异常的基本使用 462
22.2.3自定义Exception类 463
22.2.4定义多个异常 464
22.2.5重新抛出异常 465
22.2.6定义顶层异常处理器 466
22.3课后练习 466
第23章 案例实战:购物网站 467
23.1设计思路 468
23.1.1功能设计 468
23.1.2设计流程 469
23.1.3结构设计 469
23.2案例预览 470
23.3设计数据库 472
23.3.1设计数据结构 473
23.3.2访问数据库 475
23.4页面开发 475
23.4.1显示分类目录 475
23.4.2显示图书列表 477
23.4.3显示图书详细信息 478
23.4.4显示购物车 479
23.4.5浏览购物车 481
23.4.6添加到购物车 482
23.4.7更新购物车 484
23.4.8显示标题栏信息 485
23.4.9收银台结账 485
23.4.10收银台付款 488
23.4.11后台管理 489
23.5课后练习 492
第24章 综合实战:移动私密社区 493
24.1设计思路 494
24.2主页设计 494
24.3登录页设计 495
24.4注册页设计 497
24.5发布页设计 498
24.6后台开发 499
24.6.1设计数据库 499
24.6.2连接数据库 500
24.6.3首页功能实现 501
24.6.4注册页功能实现 505
24.6.5发布页功能实现 506
24.6.6回复功能实现 508
24.7课后练习 510