第一篇 PHP技术基础 1
第1章 PHP起步 1
1.1 初识PHP 1
1.2 LAMP——锋利四剑客:Linux、Apache、MySQL和PHP 2
1.3 PHP Web编程的体系结构和基本内容 3
1.3.1 了解PHP、HTML、CSS和JavaScript及其关系 3
1.3.2 HTML文档 3
1.3.3 使用样式表实现页面效果 4
1.3.4 客户端的响应 4
1.3.5 嵌入式脚本页面 4
1.4 开始PHP之旅:搭建PHP开发环境 5
1.4.1 下载Apache、MySQL和PHP 5
1.4.2 在Windows下配置开发环境 7
1.4.3 在Linux/UNIX下配置开发环境 9
1.4.4 善其事,利其器——PHP编辑器的选择 10
1.5 用PHP做些事儿 12
1.5.1 编写第一个PHP程序——“Hello,pHp!” 12
1.5.2 使用PHP处理HTML表单 12
1.6 深入了解Apache、PHP和MySQL 13
1.7 实例:使用JavaScript验证HTML表单数据 17
1.8 小结 22
1.9 习题 22
第2章 PHP语言 24
2.1 基础语法 24
2.1.1 PHP分隔符 24
2.1.2 给PHP程序添加注释 25
2.2 数据类型 26
2.2.1 整数类型:integer 26
2.2.2 浮点类型:float 26
2.2.3 字符串类型:string 26
2.2.4 布尔类型:boolean 29
2.2.5 数组类型:array 29
2.3 变量 30
2.3.1 什么是变量 30
2.3.2 变量的命名规则 30
2.3.3 变量类型的转换 30
2.3.4 可变变量 31
2.3.5 PHP的预定义变量 32
2.3.6 判断变量的类型 33
2.3.7 获取变量的类型 33
2.3.8 设置变量的类型 34
2.3.9 判断一个变量是否已经定义 34
2.3.10 删除一个变量 35
2.4 常量 35
2.4.1 什么是常量 35
2.4.2 定义常量 35
2.4.3 使用PHP预定义常量 36
2.5 表达式 37
2.6 运算符 38
2.6.1 赋值运算符 38
2.6.2 算术运算符 38
2.6.3 递增/递减运算符 39
2.6.4 字符串运算符 40
2.6.5 逻辑运算符 41
2.6.6 比较运算符 42
2.6.7 运算符的优先级 42
2.7 PHP程序的流程控制 43
2.7.1 程序流程控制概述 43
2.7.2 条件控制语句:if和if…else语句 43
2.7.3 switch结构 46
2.7.4 循环控制语句:for循环语句 47
2.7.5 while循环语句 49
2.7.6 do…while循环语句 49
2.7.7 break和continue语句 50
2.7.8 条件运算符?: 51
2.8 函数 52
2.8.1 PHP中函数的概念 52
2.8.2 定义函数和调用函数 52
2.8.3 函数的参数和函数的返回值 53
2.8.4 PHP函数的传值与传址 55
2.8.5 变量作用域 56
2.9 小结 58
2.10 习题 59
第3章 用PHP进行Web编程 60
3.1 PHP的Web编程基础 60
3.1.1 HTTP协议原理 60
3.1.2 创建HTML表单 61
3.1.3 访问和获取HTML表单数据 61
3.1.4 用PHP处理表单数据 63
3.1.5 用PHP验证表单数据有效性 64
3.1.6 PHP中的session 65
3.1.7 PHP中的文件上传处理 66
3.2 实例:用PHP开发一个简单的网站 68
3.2.1 网站功能设计 68
3.2.2 页面设计 69
3.2.3 用JavaScript实现客户端响应 69
3.2.4 服务器端用PHP处理请求 70
3.3 小结 73
3.4 习题 73
第二篇 PHP数据处理 75
第4章 PHP中的函数 75
4.1 用户自定义函数 75
4.2 函数的其他定义方式 76
4.3 递归函数 77
4.4 函数的参数 78
4.5 函数的返回值 79
4.6 变量函数 80
4.7 系统函数 81
4.8 带有默认参数函数的使用方法 81
4.9 小结 82
4.10 习题 82
第5章 PHP对数组的处理 83
5.1 建立数组的方法 83
5.1.1 使用array()函数新建数组 83
5.1.2 使用变量建立数组 84
5.1.3 使用两个数组创建一个数组 85
5.2 输出数组元素的方法 85
5.2.1 使用for循环语句输出数组元素 85
5.2.2 使用foreach循环语句输出数组元素 86
5.2.3 使用函数print_r()显示数组元素 87
5.3 计算数组元素个数 88
5.4 对数组进行分割、合并 88
5.4.1 实现数组分割 89
5.4.2 实现数组合并 89
5.5 处理数组元素和键值位置 90
5.6 对数组进行排序 92
5.6.1 使用sort()对数组进行排序 92
5.6.2 使用rsort()对数组进行逆向排序 93
5.6.3 排序时保持原数组的索引 94
5.6.4 数组的随机排序 95
5.6.5 数组的反向排序 96
5.7 重置一个数组 97
5.8 用数组对变量赋值 98
5.9 快速创建数组 99
5.10 压入和弹出数组元素 99
5.10.1 压入数组元素 99
5.10.2 弹出数组元素 100
5.11 改变数组字符索引名的大小写 101
5.12 对数组的集合处理 102
5.12.1 计算交集 102
5.12.2 计算差集 104
5.13 交换数组索引和元素 104
5.14 快速填充数组元素 105
5.15 统计数组元素出现次数 105
5.16 检查数组索引是否存在 106
5.17 取得数组中的所有索引 107
5.18 用回调函数处理数组 108
5.19 其他数组处理函数 109
5.19.1 判断某个值是否存在于数组 109
5.19.2 获取数组中当前单元的索引值 110
5.20 小结 111
5.21 习题 111
第6章 PHP对字符串的处理 113
6.1 对字符串做分割和合并 113
6.2 对字符串做比较和替换 114
6.2.1 比较两个字符串大小 114
6.2.2 字符串的替换 115
6.3 输出打印字符串 117
6.4 格式化字符串 117
6.5 获取字符串中的一个子串 119
6.6 删除字符串两侧的空白 120
6.6.1 删除字符串末尾部分的空白字符 120
6.6.2 删除字符串开始部分的空白字符 121
6.6.3 删除字符串两头的空白字符 121
6.7 获取字符串的长度 123
6.8 其他常见的字符串操作 123
6.8.1 对字符串做大小写转换 123
6.8.2 处理含有HTML标记的字符串 124
6.8.3 多次生成一个字符串 125
6.8.4 将字符串分析到变量 127
6.8.5 转换字符串到数组 128
6.8.6 计算字符串的散列 129
6.9 小结 130
6.10 习题 131
第7章 用PHP处理日期和时间 132
7.1 获取格式化的日期和时间 132
7.2 处理UJNIX时间戳 134
7.3 获取日期和时间的相关信息 135
7.4 PHP中的日期计算 136
7.5 检查日期的有效性 136
7.6 使用PHP制作万年历 137
7.7 小结 140
7.8 习题 141
第8章 用PHP操作目录和文件 142
8.1 常见的目录操作 142
8.1.1 打开和关闭目录 142
8.1.2 获取目录中下一个文件的文件名 143
8.1.3 列出某一目录下的所有文件 143
8.1.4 获取和改变PHP的当前工作目录 144
8.1.5 从目录句柄中读取条目 145
8.1.6 关闭目录句柄 146
8.2 常见的文件操作 146
8.2.1 打开和关闭文件 146
8.2.2 读出文件的内容 147
8.2.3 向文件写入内容 149
8.2.4 获取文件的相关信息 150
8.2.5 一些判断文件性质的函数 151
8.3 文件和目录的通用操作 152
8.3.1 获取路径中的文件名和目录名 152
8.3.2 判断文件或目录是否存在 153
8.3.3 建立目录和删除目录 154
8.3.4 复制、删除和移动文件 155
8.4 文件的高级操作 156
8.4.1 处理文件的锁定 156
8.4.2 更改文件的属性 157
8.4.3 获取文件时间属性 158
8.4.4 通过HTTP协议打开文件 159
8.4.5 包含指定的文件到当前文件 160
8.5 小结 161
8.6 习题 162
第9章 PHP中对URL、HTTP的处理 163
9.1 URL地址分析 163
9.1.1 为什么要对URL进行处理 163
9.1.2 对URL进行编码 163
9.1.3 对URL进行解码 164
9.1.4 对URL地址进行分析 165
9.2 HTTP应用 166
9.2.1 生成一个HTTP头 166
9.2.2 获取HTTP头信息 167
9.3 在PHP中生成cookie 168
9.3.1 生成cookie 169
9.3.2 获取cookie 169
9.3.3 设置cookie的有效期 170
9.3.4 解决cookie的失效问题 171
9.3.5 设置cookie的有效路径 171
9.3.6 删除cookie 172
9.4 小结 172
9.5 习题 172
第1 0章 用PHP获取系统信息 174
10.1 获取和添加PHP环境变量 174
10.2 查看被载入的PHP扩展模块 175
10.3 获取PHP的当前各类信息 177
10.4 获取当前PHP进程的进程号和程序所有者 177
10.5 小结 178
10.6 习题 178
第11章 PHP中的数学运算 179
11.1 数学运算 179
11.1.1 常见的数据运算函数 179
11.1.2 数据运算函数范例 180
11.2 不同进制之间的数字转换 181
11.3 随机数 182
11.3.1 生成随机数的步骤 182
11.3.2 生成随机数的函数 182
11.4 小结 183
11.5 习题 184
第12章 应用实践一:基于文本的简易BLOG系统 185
12.1 系统功能设计 185
12.2 数据的存储及系统架构 186
12.3 系统功能实现 186
12.3.1 实现BLOG文章的显示 187
12.3.2 完善用户界面 189
12.3.3 实现BLOG文章的添加功能 194
12.3.4 实现登录功能 198
12.3.5 实现BLOG首页 201
12.3.6 实现BLOG文章的编辑功能 204
12.3.7 实现BLOG文章的删除功能 207
12.3.8 实现BLOG归档显示的功能 211
12.3.9 实现BLOG的退出功能 214
12.4 小结 216
12.5 习题 216
第三篇 PHP和MyySQL数据库 217
第13章 MySQL数据库和SQL基础 217
13.1 MySQL数据库的安装与配置 217
13.1.1 认识MySQL 217
13.1.2 安装MySQL前的准备 218
13.1.3 安装并配置MySQL 218
13.1.4 管理工具 224
13.1.5 PHP配置文件与MySQL访问 225
13.1.6 下载phpMyAdmin 225
13.1.7 配置phpMyAdmin 226
13.1.8 使用phpMyAdmin 226
13.2 MySQL数据库的基本操作 229
13.2.1 表、字段、记录和键的概念 229
13.2.2 登录和退出MySQL 230
13.2.3 建立和删除数据库 230
13.2.4 表的查看与建立 231
13.2.5 建立索引 232
13.3 MySQL中的SQL语法基础 233
13.3.1 查看表结构 233
13.3.2 插入数据 233
13.3.3 查询数据 234
13.3.4 条件查询 234
13.3.5 更新数据 235
13.3.6 删除数据 236
13.3.7 对查询结果排序 236
13.3.8 对查询结果分组 237
13.3.9 对查询结果进行限定 237
13.3.10 MySQL的数据类型 238
13.3.11 MySQL运算符 239
13.3.12 MySQL中的模式匹配 239
13.3.13 使用MySQL函数 240
13.4 小结 243
13.5 习题 243
第14章 使用PHP操作MySQL数据库 245
14.1 操作MySQL的PHP函数 245
14.1.1 连接和关闭数据库的函数 245
14.1.2 执行SQL语句的函数 246
14.1.3 处理查询结果集的函数 246
14.1.4 获取字段信息的函数 247
14.1.5 数据库操作的其他函数 247
14.2 使用PHP连接MySQL数据库 248
14.2.1 建立和数据库的连接 248
14.2.2 持久连接和临时连接 249
14.2.3 关闭连接 249
14.3 使用PHP显示MySQL数据库的数据 250
14.3.1 在PHP中执行SQL语句 250
14.3.2 用PHP处理数据结果集 252
14.3.3 向Web页面显示数据 254
14.3.4 数据分页显示的原理及实现 255
14.4 使用PHP维护MySQL数据库的数据 258
14.4.1 从页面获取数据并插入数据库 259
14.4.2 根据表单内容修改数据库数据 260
14.4.3 通过PHP删除数据库数据 263
14.5 PHP操作MySQL常见错误信息及分析 265
14.6 小结 267
14.7 习题 267
第四篇 更上一层楼——PHP进阶 269
第15章 面向对象的PHP编程 269
15.1 面向对象编程的基本概念 269
15.2 PHP中的类和对象 270
15.2.1 类的创建 270
15.2.2 类的实例化——对象 272
15.2.3 构造函数和析构函数 273
15.2.4 继承 274
15.2.5 访问对象的属性和方法 275
15.2.6 PHP中类的静态成员 277
15.2.7 PHP中一些和类有关的函数 278
15.3 实例分析——深入理解PHP的类和对象 281
15.4 小结 286
15.5 习题 286
第16章 PHP程序中的错误处理 288
16.1 在PHP中处理程序错误 288
16.1.1 语法错误的处理 288
16.1.2 运行时错误的处理 289
16.1.3 逻辑错误的处理 290
16.2 PHP中的异常处理类及其用法 290
16.2.1 PHP中的异常处理类 291
16.2.2 PHP程序中捕获异常的方法 291
16.2.3 获取异常信息 293
16.2.4 获取错误发生的文件 294
16.2.5 获取错误发生的行 295
16.3 PHP配置设定的错误处理方法 296
16.3.1 和错误处理有关的项 296
16.3.2 错误报告 296
16.4 自定义错误处理 298
16.5 小结 300
16.6 习题 300
第17章 PHP与XM L 302
17.1 认识XML 302
17.1.1 什么是XML 302
17.1.2 XML的结构 302
17.1.3 XML、HTML、SGML之间的关系和区别 303
17.1.4 建立一个简单的XML文件 303
17.2 深入认识XML文档 306
17.2.1 XML声明 306
17.2.2 XML元素 306
17.2.3 标记和属性 307
17.2.4 注释 308
17.2.5 处理指令 309
17.2.6 实体简介 309
17.2.7 文件类型定义 310
17.3 在PHP中处理XML 312
17.3.1 在PHP中建立对XML的支持 313
17.3.2 用PHP函数处理XML文档 313
17.3.3 XML解析器的建立和释放 314
17.3.4 处理XML元素的函数 314
17.3.5 处理XML字符数据的函数 315
17.3.6 解析一个XML文档 315
17.3.7 完整实例分析 315
17.4 使用SimpleXML处理XML 317
17.4.1 SimpleXML简介 317
17.4.2 载入XML文件的函数 318
17.4.3 载入XML字符串的函数 319
17.4.4 使用SimpleXML的实例 320
17.5 使用PHP的DOM库处理XML文档 320
17.5.1 什么是DOM 320
17.5.2 通过DOM在PHP中处理XML文档的过程 321
17.6 小结 323
17.7 习题 323
第18章 PHP与AJAX 325
18.1 认识AJAX 325
18.1.1 什么是AJAX 325
18.1.2 AJAX的工作原理 326
18.2 AJAX与数据交互 327
18.2.1 创建XMLHttpRequest对象 327
18.2.2 发送异步请求 328
18.2.3 编写回调函数 331
18.2.4 完整实例 331
18.3 一个实现AJAX的PHP类——xajax 335
18.3.1 下载和安装xajax 335
18.3.2 xajax简介 335
18.3.3 在PHP程序中使用xajax 336
18.3.4 xajax应用实例 337
18.4 一个AJAX框架——Spry框架 338
18.4.1 Spry框架简介 338
18.4.2 Spry框架的使用方法 340
18.5 小结 341
18.6 习题 341
第19章 PHP与图像处理 343
19.1 PHP的图像处理库——GD库 343
19.1.1 在Linux下安装GD库 343
19.1.2 在Windows下安装GD库 343
19.1.3 主要图像处理函数介绍 344
19.2 图像的建立 345
19.2.1 生成图像的步骤 345
19.2.2 用PHP生成图像 346
19.2.3 设定图像颜色 347
19.2.4 在图像上绘制直线 347
19.2.5 在图像上输出文字 348
19.3 图片处理 350
19.3.1 打开已经存在的图片 351
19.3.2 获取图片的相关属性 351
19.3.3 对图片加水印效果 353
19.3.4 生成已有图片的缩略图 357
19.3.5 对图片加文字效果 359
19.4 实例:生成带有底纹的数字验证码图片 360
19.5 小结 361
19.6 习题 362
第20章 PHP与MVC开发模式 364
20.1 什么是MVC模型 364
20.2 MVC模型的组成 365
20.2.1 控制器 365
20.2.2 数据模型 365
20.2.3 视图 366
20.3 PHP开发中的模板技术 366
20.3.1 什么是模板 366
20.3.2 在PHP程序中使用模板 366
20.3.3 Smarty模板引擎介绍 367
20.3.4 Smarty模板引擎的使用 368
20.4 常见的基于MVC的PHP开发框架简介 369
20.4.1 CodeIgniter 369
20.4.2 CakePHP 370
20.4.3 Zend Framework 370
20.4.4 FleaPHP 371
20.5 CodeIgniter框架应用 371
20.5.1 CodeIgniter的技术特点介绍 371
20.5.2 安装CodeIgniter 372
20.5.3 CodeIgniter的Controller 372
20.5.4 CodeIgniter的Model 374
20.5.5 CodeIgniter的View 375
20.6 小结 377
20.7 习题 378
第21章 PHP中的正则表达式 379
21.1 什么是正则表达式 379
21.2 正则表达式的语法 380
21.2.1 模式 380
21.2.2 元字符 381
21.2.3 转义字符 382
21.2.4 字符类 382
21.2.5 反义 383
21.2.6 数量匹配限定符 383
21.2.7 正则表达式构建实例 384
21.3 PHP中的POSIX扩展正则表达式函数 385
21.3.1 正则表达式匹配函数 385
21.3.2 替换匹配字符串的函数 387
21.3.3 根据正则表达式分割字符串的函数 388
21.3.4 生成正则表达式的函数 390
21.4 PHP中的PERL兼容正则表达式函数 390
21.4.1 PERL兼容正则表达式中的修正符 391
21.4.2 返回与模式匹配的数组单元的正则表达式函数 391
21.4.3 进行正则表达式匹配的函数 393
21.4.4 进行全局正则表达式匹配的函数 394
21.4.5 执行正则表达式的搜索和替换的函数 395
21.5.6 用正则表达式分割字符串的函数 396
21.5 几例常见正则表达式分析 398
21.5.1 检查IP地址的正则表达式 398
21.5.2 检查中文字符的正则表达式 400
21.5.3 检查Email地址的正则表达式 401
21.5.4 检查URL地址的正则表达式 403
21.6 小结 404
21.7 习题 405
第五篇 PHP应用实例与常见面试题 407
第22章 应用实践二:用PHP发送邮件 407
22.1 mail()函数和SMTP简介 407
22.1.1 mail()函数配置与语法 407
22.1.2 SMTP与指令 408
22.2 功能设计和实现 408
22.2.1 设计一个发送邮件的类 409
22.2.2 测试发送邮件功能 412
22.2.3 发送邮件的表单及程序实现 413
22.3 小结 416
第23章 常见面试题 417
面试题1 数组函数arsort()的作用是什么 417
面试题2 简述include语句和require语句的区别 417
面试题3 写出<?php echo 8%(-2)?>的输出结果 417
面试题4 如何实现字符串翻转 417
面试题5 说出echo、print()和print_r()3个函数的区别 417
面试题6 写出显示客户端IP与服务器IP的代码 418
面试题7 SQL中LEFT JOIN是什么意思 418
面试题8 如何修改session的生存时间 418
面试题9 写一个能遍历文件夹下所有文件和子文件夹的函数 419
面试题10 写一个过滤网页上所有JS/VBS脚本的正则表达式 419
面试题11 PHP中字符串的表现形式有哪些 419
面试题12 谈谈你对MVC的认识 420
面试题13 sort()、asort()和ksort()有什么区别 420
面试题14 说出代码的输出结果(变量的作用域) 420
面试题15 哪个函数可打开文件并且能读/写文件信息 421
面试题16 写一个函数验证电子邮件的格式 421
面试题17 使用PHP写一段简单查询 421
面试题18 写出PHP权限控制修饰符 422
面试题19 说明PHP中传值与传引用的区别 422
面试题20 从一个标准URL里取出文件的扩展名 422
面试题21 用PHP打印出前一天的时间 422
面试题22 你一般都使用哪些工具进行版本控制 423
面试题23 优化MYSQL数据库的方法 423
面试题24 创建vote表用于记录单选投票用户的数据 423
面试题25 网站出现too many connection错误的解决方案 423
面试题26 session与cookie的区别 424
附录A 配置Eclipse成为PHP开发工具 425
附录B 正则表达式参考 429
附录C PHP代码编写的一般规则 432