第1章 PHP入门 1
1.1 Web技术基础 1
1.1.1 Web技术概述 1
1.1.2 主流的Web应用平台 3
1.1.3 Web工作原理 3
1.1.4 常用的Web技术 4
1.2 PHP基础知识 7
1.2.1 PHP概述 7
1.2.2 PHP的优势 7
1.2.3 PHP的应用领域 8
1.2.4 常用的PHP开发工具 8
1.2.5 如何学好PHP 8
1.2.6 PHP学习资源 9
1.3 PHP开发环境的搭建 12
1.3.1 WAMP环境的搭建 12
1.3.2 LAMP环境的搭建 17
1.3.3 扩展库 19
1.4 第一个PHP程序 21
1.5 调试与错误处理 22
1.5.1 使用自带的报错功能 22
1.5.2 引进调试工具 23
1.5.3 调试业务逻辑错误 24
1.5.4 调试非功能性错误 24
1.6 本章小结 24
1.7 思考和练习 25
第2章 PHP语法和函数 26
2.1 PHP的语法风格 26
2.1.1 PHP标记 26
2.1.2 PHP注释 27
2.2 PHP标识符与关键字 28
2.2.1 PHP标识符 28
2.2.2 关键字 28
2.3 PHP常量 29
2.3.1 常量的定义 29
2.3.2 预定义常量 30
2.4 PHP变量 32
2.4.1 变量的声明和使用 32
2.4.2 PHP的数据类型 33
2.4.3 检测变量的数据类型 34
2.4.4 可变变量 35
2.4.5 变量的作用域 35
2.5 变量类型的转换 37
2.5.1 自动类型转换 38
2.5.2 强制类型转换 38
2.6 PHP运算符与表达式 39
2.6.1 运算符的类型 40
2.6.2 运算符的优先级 44
2.7 流程控制语句 45
2.7.1 选择结构 45
2.7.2 循环结构 49
2.8 函数 53
2.8.1 定义和调用函数 53
2.8.2 在函数间传递参数 54
2.8.3 从函数中返回值 55
2.8.4 变量函数 56
2.8.5 对函数的引用 56
2.8.6 取消引用 57
2.9 本章小结 58
2.10 思考和练习 58
第3章 字符串 59
3.1 创建和访问字符串 59
3.1.1 创建字符串 59
3.1.2 在字符串中引用变量 60
3.1.3 自定义分隔符 61
3.1.4 求字符串的长度和单词个数 62
3.1.5 访问字符串中的字符 62
3.2 搜索字符串 63
3.2.1 用strstr()函数搜索字符串 63
3.2.2 用strpos()和strrpos()函数定位字符串位置 63
3.2.3 用substr_count()函数统计字符串的出现次数 64
3.2.4 用strpbrk()函数搜索字符集 65
3.3 在字符串中进行字符替换 65
3.3.1 用str_replace()函数替换全部搜索字符串 65
3.3.2 用substr_replace()替换字符串的部分内容 65
3.3.3 用strtr()函数变换字符 66
3.4 格式化字符串 66
3.4.1 通用的格式化函数printf()和sprintf() 66
3.4.2 删除空白符的函数trim()、ltrim()和rtrim() 70
3.4.3 填充字符串函数str_pad() 71
3.4.4 自动换行函数wordwrap() 71
3.4.5 格式化数值函数number_format() 72
3.5 字母大小写转换 73
3.6 本章小结 74
3.7 思考和练习 74
第4章 数组 75
4.1 数组概述 75
4.2 数组的创建与访问 76
4.2.1 创建数组 76
4.2.2 访问数组的元素 76
4.2.3 修改元素值 77
4.2.4 新增数组元素 77
4.2.5 输出所有数组元素 78
4.2.6 切割数组 79
4.2.7 统计数组中元素的个数 80
4.2.8 逐个访问数组的元素 80
4.3 用foreach遍历数组 83
4.3.1 用foreach遍历数组的每个值 83
4.3.2 用foreach遍历数组的键和值 83
4.3.3 用foreach遍历修改数组元素的值 84
4.4 多维数组 85
4.4.1 创建多维数组 85
4.4.2 访问多维数组的元素 86
4.4.3 多维数组的遍历 86
4.5 数组的操作 87
4.5.1 数组排序 88
4.5.2 添加和删除数组元素 92
4.5.3 合并数组 96
4.5.4 数组与字符串之间的转换 97
4.5.5 把数组转换为变量列表 98
4.6 本章小结 99
4.7 思考和练习 99
第5章 正则表达式 101
5.1 什么是正则表达式 101
5.1.1 正则表达式的概念 101
5.1.2 正则表达式的使用场景 102
5.2 正则表达式的语法规则 103
5.2.1 行定位符(^和$) 103
5.2.2 单词定界符(\b、\B) 103
5.2.3 字符类([]) 103
5.2.4 选择字符(|) 104
5.2.5 连字符(-) 104
5.2.6 排除字符([^]) 104
5.2.7 限定符(?*+{n,m}) 104
5.2.8 点字符(.) 105
5.2.9 转义字符? 105
5.2.10 反斜线? 106
5.2.11 圆括号字符(()) 107
5.2.12 反向引用 107
5.3 PHP中的模式匹配 107
5.4 正则表达式的使用 108
5.4.1 匹配字面字符 108
5.4.2 用字符类匹配字符类型 109
5.4.3 多次匹配同一字符 110
5.4.4 贪婪匹配法和非贪婪匹配法 110
5.4.5 用子模式分组模式 110
5.4.6 引用前面的子模式匹配串 111
5.4.7 匹配多个模式 111
5.5 用preg_match_all()函数实现多次匹配 111
5.6 用preg_grep()函数搜索数组 115
5.7 文本替换 116
5.7.1 用preg_replace()替换文本 116
5.7.2 用preg_replace_callback()替换文本 117
5.8 本章小结 118
5.9 思考和练习 118
第6章 PHP与Web页面的交互 119
6.1 表单 120
6.1.1 创建表单 120
6.1.2 表单元素 120
6.2 将表单保存为HTML文件 123
6.3 获取表单数据的两种方法 125
6.3.1 通过POST方式提交表单 125
6.3.2 通过GET方式提交表单 125
6.4 PHP参数传递的常用方法 126
6.4.1 通过$_POST[]接收表单数据 126
6.4.2 通过$_GET[]接收表单数据 126
6.5 在网页中嵌入PHP脚本 127
6.5.1 在HTML标记中添加PHP脚本 127
6.5.2 对表单元素的value属性进行赋值 127
6.6 在PHP中获取表单数据 127
6.6.1 获取基本表单元素的值 128
6.6.2 获取单选按钮的值 129
6.6.3 获取复选框的值 130
6.6.4 获取下拉列表框/菜单列表框的值 130
6.6.5 获取文件域的值 131
6.7 对URL传递的参数进行编码和 132
解码 132
6.7.1 对URL传递的参数进行编码 132
6.7.2 对URL传递的参数进行解码 133
6.8 Web服务器端的其他数据采集方法 134
6.8.1 预定义变量$_REQUEST 134
6.8.2 预定义变量$SERVER 134
6.9 文件上传 136
6.9.1 配置php.ini以实现PHP文件上传功能 136
6.9.2 文件上传函数 137
6.9.3 多文件上传 139
6.10 本章小结 140
6.11 思考和练习 140
第7章 日期和时间、HTTP 141
7.1 日期和时间的处理 141
7.1.1 时间戳 141
7.1.2 获取当前日期和时间 142
7.1.3 创建时间戳 142
7.1.4 转换时间戳 144
7.1.5 格式化日期字符串 146
7.1.6 检查日期值 148
7.1.7 毫秒的使用 148
7.1.8 DataTime 150
7.2 HTTP的使用 152
7.2.1 HTTP请求 152
7.2.2 HTTP响应 153
7.2.3 修改HTTP响应方式 155
7.3 本章小结 156
7.4 思考和练习 156
第8章 Cookie和Session 157
8.1 管理Cookie 157
8.1.1 了解Cookie 157
8.1.2 创建Cookie 159
8.1.3 读取Cookie 159
8.1.4 删除Cookie 160
8.1.5 Cookie的生命周期 161
8.2 管理Session 161
8.2.1 了解Session 161
8.2.2 创建Session 162
8.2.3 设置Session的有效时间 163
8.2.4 通过Session对用户操作权限进行判断 164
8.2.5 删除和销毁Session 167
8.2.6 Session和Cookie的区别 168
8.2.7 Session和Cookie的应用 169
8.3 Session的高级应用 169
8.3.1 Session临时文件 169
8.3.2 Session缓存 169
8.3.3 Session自动回收 170
8.3.4 php.ini中的Session配置 171
8.4 本章小结 172
8.5 思考和练习 173
第9章 数据库编程 174
9.1 MySQL简介 174
9.1.1 客户端/服务器(Client/Server)软件 174
9.1.2 数据库常见术语 175
9.2 MySQL的启动与连接 176
9.2.1 启动MySQL服务 176
9.2.2 连接和断开MySQL数据库 178
9.2.3 配置Path环境变量 178
9.3 操作MySQL数据库 179
9.3.1 创建和查看数据库 180
9.3.2 删除数据库 181
9.3.3 选择数据库 181
9.3.4 综合实例——数据库的创建和删除 181
9.4 操作数据表 184
9.4.1 创建数据表 184
9.4.2 查看表结构 186
9.4.3 修改表结构 187
9.4.4 重命名数据表 187
9.4.5 删除数据表 187
9.5 数据记录的更新操作 188
9.5.1 添加数据记录 188
9.5.2 查询数据记录 188
9.5.3 修改数据记录 189
9.5.4 删除数据记录 189
9.6 MySQL数据库的备份与还原 190
9.6.1 使用MYSQLDUMP命令备份数据库 190
9.6.2 使用mysql命令还原数据库 190
9.7 本章小结 191
9.8 思考和练习 191
第10章 用PHP操作MySQL数据库 192
10.1 PHP访问MySQL数据库的基本步骤 192
10.2 PHP操作MySQL数据库的方法 194
10.2.1 连接MySQL服务器 194
10.2.2 选择MySQL数据库 195
10.2.3 执行SQL语句 196
10.2.4 mysql_fetch_array()函数 197
10.2.5 mysql_fetch_object()函数 199
10.2.6 mysql_fetch_row()函数 199
10.2.7 mysql_num_rows()函数 200
10.2.8 释放资源 201
10.2.9 关闭连接 201
10.3 PHP操作数据库 202
10.3.1 PHP操作数据库 202
10.3.2 动态添加用户信息 203
10.3.3 查询数据信息 205
10.3.4 修改数据 206
10.3.5 删除数据 209
10.4 本章小结 210
10.5 思考和练习 210
第11章 文件操作 211
11.1 文件与目录基础 211
11.2 获取文件的信息 212
11.2.1 获取文件的时间属性 212
11.2.2 从路径获取文件名 212
11.3 打开和关闭文件 213
11.3.1 用fopen()打开文件 213
11.3.2 用fclose()关闭文件 214
11.4 文件的读写 214
11.4.1 读写字符串 215
11.4.2 文件末尾的测试 217
11.4.3 一次读取一行内容 218
11.4.4 读取CSV文件 218
11.4.5 读取和写入整个文件 219
11.4.6 随机存取文件数据 221
11.5 文件的权限 222
11.5.1 改变文件的权限 222
11.5.2 检查文件权限 223
11.6 文件的复制、重命名和删除 223
11.7 目录 224
11.7.1 其他目录函数 225
11.7.2 目录对象 227
11.7.3 区分文件和目录 227
11.8 本章小结 229
11.9 思考和练习 229
第12章 图像技术 230
12.1 计算机图形基础 230
12.1.1 色彩原理 230
12.1.2 坐标系 231
12.1.3 图像类型 231
12.2 使用GD库 232
12.2.1 GD&PHP可以处理的文件类型 232
12.2.2 在PHP中启用GD库 232
12.3 创建图像 233
12.3.1 新建图像 234
12.3.2 颜色分配 234
12.3.3 输出图像 235
12.3.4 在图像上进行绘制 236
12.4 处理图像 241
12.4.1 打开图像 241
12.4.2 添加水印 242
12.4.3 制作缩略图 245
12.4.4 添加标准化文本 246
12.4.5 使用TrueType字体 247
12.5 本章小结 249
12.6 思考和练习 249
第13章 面向对象编程 250
13.1 面向对象编程介绍 250
13.2 创建类和对象 252
13.2.1 创建类 252
13.2.2 类的成员 252
13.2.3 实例化类 254
13.3 创建和使用属性 255
13.3.1 声明属性 255
13.3.2 属性的可见性 255
13.3.3 访问属性 256
13.3.4 静态属性 257
13.3.5 类常量 257
13.4 方法 258
13.4.1 创建方法 258
13.4.2 方法的可见性 258
13.4.3 方法的调用 258
13.4.4 方法的参数和返回值 259
13.4.5 在方法中访问对象的属性 259
13.4.6 静态方法 261
13.5 用_get()、_set()和_call()重载对象 261
13.5.1 用_get()和_set()方法重载属性访问 262
13.5.2 用_call()重载方法调用 263
13.5.3 其他重载方法 265
13.6 继承与接口 266
13.6.1 重载父类的方法 268
13.6.2 保留父类的功能 270
13.6.3 用final类和方法阻止继承和重载 270
13.6.4 抽象类和抽象方法 271
13.6.5 接口 273
13.7 自动加载类文件 276
13.8 序列化类对象 276
13.9 判断一个对象所属的类 278
13.10 本章小结 279
13.11 思考和练习 280
第14章 PHP与JavaScript和Ajax 281
14.1 了解JavaScript 281
14.1.1 什么是JavaScript 281
14.1.2 JavaScript的功能 282
14.2 JavaScript语言基础 282
14.2.1 JavaScript数据类型 282
14.2.2 JavaScript变量 283
14.2.3 JavaScript注释 284
14.3 JavaScript流程控制语句 285
14.3.1 条件语句 285
14.3.2 循环语句 288
14.3.3 跳转语句 290
14.4 JavaScript事件 291
14.5 调用JavaScript脚本 291
14.5.1 在HTML中嵌入JavaScnpt脚本 291
14.5.2 应用JavaScript事件调用自定义函数 292
14.5.3 在PHP动态网页中引用JS文件 292
14.6 在PHP中调用JavaScript 293
14.6.1 使用JavaScript脚本验证表单元素是否为空 293
14.6.2 使用JavaScript脚本制作二级导航菜单 294
14.6.3 使用JavaScript脚本控制文本域和复选框 297
14.7 Ajax技术 298
14.7.1 Ajax的概念 298
14.7.2 Ajax的开发模式 298
14.7.3 Ajax的优点 299
14.7.4 XMLHttpRequest 300
14.7.5 在Ajax开发过程中需要注意的问题 302
14.7.6 用户重名检测 303
14.8 本章小结 305
14.9 思考和练习 305
第15章 ThinkPHP 306
15.1 ThinkPHP简介 306
15.1.1 ThinkPHP的安装 307
15.1.2 ThinkPHP概述 308
15.2 ThinkPHP架构 309
15.2.1 ThinkPHP的目录结构 310
15.2.2 自动生成项目目录 311
15.2.3 命名规范 314
15.2.4 资源目录 315
15.2.5 调试模式配置 315
15.2.6 控制器 315
15.2.7 视图 318
15.2.8 数据读取 319
15.3 URL和路由 320
15.3.1 URL访问 320
15.3.2 参数传入 321
15.3.3 隐藏入口 322
15.3.4 定义路由 322
15.3.5 URL生成 323
15.4 请求与响应 323
15.4.1 请求对象 323
15.4.2 请求信息 325
15.4.3 响应信息 326
15.5 数据库操作 327
15.5.1 数据库配置 327
15.5.2 原生查询 327
15.5.3 链式操作 328
15.5.4 事务支持 328
15.6 模型和关联 329
15.6.1 模型定义 329
15.6.2 基础操作 330
15.7 视图和模板 332
15.7.1 模板输出 332
15.7.2 分页输出 333
15.7.3 渲染内容 334
15.8 本章小结 334
15.9 思考和练习 335
第16章 综合实例 336
16.1 网站开发流程 336
16.1.1 确定建站目标 336
16.1.2 进行需求分析 336
16.1.3 绘制网站原型 337
16.1.4 系统整理所需资料 337
16.1.5 与网站设计美工确定布局和风格 337
16.1.6 程序员完成网站功能实现 337
16.1.7 网站上线测试 337
16.1.8 网站推广 337
16.2 留言板 338
16.2.1 留言板制作预备知识 338
16.2.2 留言板功能需求分析 338
16.2.3 留言板数据库表设计 339
16.2.4 留言信息的读取展示 339
16.2.5 留言表单及留言处理 341
16.2.6 后台管理登录 344
16.2.7 PHP留言板系统后台管理 345
16.2.8 后台管理回复及留言删除处理 346
16.3 个人博客 347
16.3.1 功能阐述 347
16.3.2 功能结构 348
16.3.3 系统预览 348
16.3.4 数据库设计 349
16.3.5 数据表设计 349
16.3.6 连接数据库 351
16.3.7 自动生成项目目录 351
16.3.8 控制器的设置 352
16.3.9 视图设置 355
16.3.10 后台管理程序架构分析 360
16.3.11 数据模型和数据校验的设计 362
16.4 本章小结 365
16.5 思考和练习 365
参考文献 367