第1章 PHP开发环境搭建 1
1.1 PHP简介 1
1.1.1 PHP语言发展简史 2
1.1.2 PHP发展现状与展望 2
1.1.3 PHP语言的优势对比 3
1.1.4 学习提示 3
1.2 PHP的应用范围及案例 4
1.2.1 PHP可以做什么 4
1.2.2 PHP擅长的领域及产品介绍 4
1.2.3 PHP不适合做什么 5
1.2.4 其他案例 5
1.3 PHP的“Hello,world”预览 5
1.3.1 第一个PHP程序“Hello,world” 5
1.3.2 学习PHP该准备哪些软件 7
1.3.3 相关知识领域介绍 8
1.4 程序运行环境的搭建 9
1.4.1 Apache简介 9
1.4.2 安装Apache与PHP 9
1.4.3 使用phpinfo()确认Apache与PHP的安装成功 11
1.4.4 Apache的启动与关闭 12
1.4.5 Apache的配置文件httpd.conf与.htaccess简介 12
1.4.6 PHP的配置文件php.ini简介 12
1.4.7 PHP常用参数的配置 13
1.5 几种综合网络服务器系统的安装 13
1.5.1 XAMPP 14
1.5.2 WAMP 15
1.5.3 Appserv 16
1.6 几种开发工具简介 17
1.6.1 Vi及Vim 17
1.6.2 Eclipse+PHPEclipse插件 18
1.6.3 UltraEdit 18
1.6.4 EditPlus 19
1.6.5 支持PHP的IDE环境 19
1.7 小结 20
第2章 PHP基础语法 21
2.1 语言构成与工作原理 21
2.2 常量与变量 22
2.2.1 常量的定义 22
2.2.2 变量的定义 23
2.2.3 变量的作用域 24
2.2.4 动态变量 26
2.3 运算符和关键字 26
2.4 流程控制语法 27
2.4.1 程序控制语句简介 27
2.4.2 条件控制语句 27
2.4.3 循环控制语句 31
2.4.4 转移控制语句 32
2.5 表达式 33
2.5.1 表达式的分类 33
2.5.2 算术操作表达式 34
2.5.3 字符串操作表达式 35
2.5.4 逻辑操作表达式 36
2.5.5 比较操作表达式 36
2.5.6 位操作表达式 38
2.5.7 运算符的优先级 38
2.6 特殊的全局变量 39
2.7 文件包含 40
2.7.1 使用require和require_ once语句进行文件包含 40
2.7.2 使用include与include_ once语句进行文件包含 42
2.8 小结 43
第3章 PHP数据类型与操作 44
3.1 PHP的数据类型 44
3.1.1 标量数据类型 44
3.1.2 合成数据类型 48
3.1.3 特殊的数据类型 48
3.1.4 数据类型的获得与验证 49
3.2 数据类型间的转换 51
3.2.1 转换成整型 51
3.2.2 转换成浮点型 52
3.2.3 转换成字符串型 53
3.2.4 转换成布尔型 54
3.2.5 转换成数组 54
3.2.6 转换成对象 55
3.2.7 使用函数进行数据类型的强制转换 55
3.3 小结 56
第4章 函数处理与数据引用 57
4.1 函数的定义与使用 57
4.1.1 函数的调用 57
4.1.2 用户自定义函数的编写 58
4.2 PHP常用函数 59
4.2.1 获得日期时间信息函数getdate 59
4.2.2 获得当前时间函数gettimeofday 60
4.2.3 日期验证函数checkdate 61
4.2.4 格式化本地时间日期函数date 61
4.2.5 获得本地化时间戳函数mktime 63
4.2.6 输出控制函数flush 64
4.2.7 变量检测函数isset与变量释放函数unset 65
4.2.8 随机函数rand与srand 65
4.3 关于引用的解释 66
4.3.1 对变量的引用 66
4.3.2 对函数的引用 67
4.3.3 引用的释放 67
4.4 小结 68
第5章 PHP中类的应用 69
5.1 PHP中面向对象程序设计的应用 69
5.1.1 类简介 70
5.1.2 类的信息封装 70
5.1.3 静态类 70
5.2 创建一个简单类 71
5.3 PHP5与PHP4的差异 71
5.4 定义属性和方法 72
5.4.1 属性与方法的定义 72
5.4.2 传统的构造函数 72
5.4.3 PHP类中的一些特殊方法 73
5.5 类的引用、扩展与继承 75
5.5.1 类的引用 75
5.5.2 类的扩展与继承 75
5.6 操作与调用 77
5.6.1 静态类的调用 77
5.6.2 实例类型判断方法instanceof 77
5.6.3 对象的克隆 77
5.7 一些设计观念 80
5.7.1 策略模式 80
5.7.2 单例模式 81
5.7.3 工厂模式 82
5.8 接口与抽象类 86
5.8.1 接口的定义 86
5.8.2 单一接口的实现 86
5.8.3 多重接口的实现 87
5.8.4 抽象类 88
5.9 小结 90
第6章 文件系统与文本数据操作 91
6.1 PHP中的目录操作 91
6.1.1 打开目录 91
6.1.2 关闭目录 92
6.1.3 读取目录中的文件 92
6.1.4 创建目录 92
6.1.5 删除目录 93
6.2 PHP中的文件操作 93
6.2.1 打开文件 93
6.2.2 关闭文件 94
6.2.3 读取文件 94
6.2.4 写入文件 95
6.2.5 删除文件 96
6.2.6 复制文件 96
6.3 本地文件的操作实例——小型留言本 96
6.3.1 留言发表模块 96
6.3.2 浏览模块 98
6.4 远程文件的操作实例 99
6.5 文件的上传与下载 99
6.5.1 文件的上传 99
6.5.2 文件的下载 101
6.6 小结 101
第7章 字符的处理与正则表达式 102
7.1 字符类型的特殊性 102
7.2 字符的显示与格式化 103
7.2.1 字符的显示 103
7.2.2 字符的格式化 103
7.3 常见字符串的操作 104
7.3.1 字符串重复操作str_repeat 104
7.3.2 字符串替换操作str_replace和str_ireplace 105
7.3.3 字符串分解操作str_split 106
7.3.4 字符串单词数的计算函数str_word_count 107
7.3.5 字符串查找操作strstr 108
7.3.6 获得字符串长度strlen 108
7.3.7 获得字符串子串substr 109
7.4 正则表达式简介 109
7.5 正则表达式与字符操作综合应用 110
7.5.1 获得与模式匹配的数组单元preg_grep 110
7.5.2 进行全局正则表达式匹配preg_match_all 111
7.5.3 进行正则表达式匹配preg_match 113
7.5.4 转义正则表达式字符preg_quote 114
7.5.5 执行正则表达式的搜索和替换函数preg_replace 114
7.5.6 通过回调函数执行正则表达式的搜索和替换preg_replace_callback 115
7.5.7 用正则表达式进行字符串分割preg_split 115
7.6 字符操作的注意事项 117
7.7 小结 118
第8章 数组操作与数据结构算法 119
8.1 一维数组与多维数组 119
8.1.1 一维数组简介 119
8.1.2 多维数组简介 120
8.2 常用的数组操作 120
8.2.1 数组的创建与调用 120
8.2.2 数组的更新 122
8.2.3 数组元素的遍历 122
8.3 数组索引与键名的操作技巧 123
8.4 数组的排序 125
8.4.1 递增排序sort 125
8.4.2 递减排序rsort 126
8.4.3 数组排序array_multisort 126
8.5 几种数组的应用实例 128
8.5.1 顺序查找 128
8.5.2 二分法查找 128
8.5.3 使用array_search函数进行查找 129
8.5.4 线性表的入栈与出栈 130
8.5.5 数组的合并 131
8.5.6 数组的拆分 133
8.5.7 随机排序 135
8.6 小结 135
第9章 PHP程序调试 137
9.1 PHP中常见错误类型 137
9.1.1 语法错误 137
9.1.2 语义错误 138
9.1.3 逻辑错误 138
9.1.4 注释错误 138
9.1.5 运行时错误 139
9.2 PHP程序调试策略 139
9.2.1 PHP的错误级别 139
9.2.2 打开PHP的错误报告 141
9.2.3 使用print进行程序调试 141
9.3 使用PHPEclipse进行PHP程序调试 142
9.3.1 使用Eclipse编写PHP程序的好处 142
9.3.2 PHPEclipse的安装与启动 142
9.3.3 PHPEclipse的使用 143
9.3.4 PHPEclipse的语法错误强调功能 145
9.3.5 PHPEclipse的调试界面 146
9.3.6 使用PHPEclipse调试PHP代码的常见问题 149
9.4 错误的处理 150
9.4.1 错误的隐藏 150
9.4.2 错误信息的定制 151
9.4.3 超时错误的处理 152
9.5 小结 153
第10章 PHP中的异常处理 154
10.1 异常处理的原理 154
10.2 PHP中的异常处理 155
10.2.1 异常类Exception 155
10.2.2 异常抛出关键字throw 156
10.2.3 异常捕获语句try-catch 157
10.2.4 异常处理函数设置set_exception_handler 158
10.2.5 完整的异常信息 159
10.3 扩展的异常处理类 161
10.4 异常的传递与重掷 164
10.5 小结 166
第11章 PHP与表单 167
11.1 HTML表单简介 167
11.1.1 表单标签form 168
11.1.2 输入标签input与 168
文本框 168
11.1.3 按钮 169
11.1.4 单选按钮与复选框 170
11.1.5 多行文本域标签textarea 172
11.1.6 下拉框与列表框标签select 173
11.2 表单数据的接收 174
11.2.1 GET方法 174
11.2.2 POST方法 177
11.3 常用表单数据的验证方法 178
11.3.1 姓名验证 178
11.3.2 日期验证 178
11.3.3 E-mail地址验证 179
11.3.4 密码字段验证 179
11.3.5 改进的用户信息输入程序 179
11.4 URL编码解码函数 182
11.4.1 编码字符串urlencode 182
11.4.2 解码字符串urldecode 183
11.5 小结 183
第12章 PHP与JavaScript交互 184
12.1 JavaScript简介 184
12.2 JavaScript的数据类型 185
12.3 JavaScript程序设计基础 185
12.3.1 在HTML中嵌入JavaScript 186
12.3.2 变量 186
12.3.3 注释 186
12.3.4 函数的定义与调用 187
12.3.5 条件语句 187
12.3.6 循环语句 190
12.3.7 对象 192
12.3.8 事件 194
12.4 PHP动态生成JavaScript代码 194
12.4.1 多行输出 194
12.4.2 单行输出 195
12.4.3 PHP动态生成JavaScript实例——进度条 196
12.5 JavaScript中调用PHP程序 197
12.5.1 页面的跳转 197
12.5.2 隐性调用PHP程序 198
12.6 JavaScript和PHP综合实例——表单验证 199
12.6.1 表单设计 199
12.6.2 JavaScript代码设计 200
12.6.3 PHP代码设计 202
12.6.4 代码的运行 203
12.7 小结 204
第13章 关系型数据库的基础知识 205
13.1 关系型数据库与关系型数据库系统的介绍 205
13.2 关系型数据库系统的结构与运行过程 206
13.2.1 关系型数据库系统的层次结构 206
13.2.2 关系型数据库系统的运行过程 207
13.3 常用关系型数据库的介绍 208
13.4 SQL语言简介 209
13.5 常见数据库设计问题 209
13.6 关系型数据库的设计原则 210
13.6.1 第一范式(1NF) 210
13.6.2 第二范式(2NF) 211
13.6.3 第三范式(3NF) 211
13.7 小结 212
第14章 MySQL的安装与操作 213
14.1 MySQL数据库介绍 213
14.2 安装与配置 213
14.2.1 下载MySQL 214
14.2.2 MySQL的安装 214
14.2.3 MySQL的配置 215
14.2.4 MySQL的启动与关闭 217
14.3 如何创建一个数据库与表 218
14.3.1 登录与退出MySQL命令行管理模式 218
14.3.2 MySQL的数据库操作 219
14.3.3 表的创建 221
14.4 数据类型介绍 223
14.5 索引与唯一值 224
14.6 数据的操作 225
14.6.1 表的修改 225
14.6.2 表的删除 226
14.6.3 数据的查询 226
14.6.4 数据的插入 232
14.6.5 数据的更新 234
14.6.6 数据的删除 234
14.7 小结 235
第15章 MySQL与PHP的应用 236
15.1 PHP结合数据库应用的优势 236
15.2 Web数据库的工作原理 236
15.3 使用PHP操作MySQL数据库 237
15.3.1 数据库服务器的连接与断开 237
15.3.2 选择数据库 238
15.3.3 执行SQL语句 238
15.3.4 获得查询结果集的记录数 240
15.3.5 获得结果集的某一条记录 240
15.3.6 逐行获取结果集的每条记录 241
15.3.7 结果集的分页 244
15.3.8 用户动态添加记录 245
15.3.9 用户动态更新记录 247
15.3.1 0用户动态删除记录 250
15.4 使用PHP获取MySQL数据库的信息 251
15.4.1 获取数据库的信息 251
15.4.2 获取表的信息 252
15.4.3 获取列的数目 253
15.4.4 获取列的名称 253
15.4.5 获取列的数据类型 253
15.4.6 获取列的长度 253
15.4.7 获取列的标志 254
15.4.8 查看表中各列属性的应用实例 254
15.5 常见问题与解决方案 255
15.6 小结 257
第16章 数据库中的程序逻辑 258
16.1 数据库程序逻辑与PHP程序逻辑的分体设计原则 258
16.2 数据库程序逻辑与数据的关系 259
16.3 存储过程的设计 259
16.3.1 定界符重定义 259
16.3.2 存储过程的创建与调用 260
16.3.3 存储过程的参数 261
16.3.4 复合语句 264
16.3.5 变量 264
16.3.6 条件语句 266
16.3.7 循环语句 268
16.3.8 游标 270
16.3.9 存储过程的删除 272
16.4 触发器的设计 272
16.4.1 触发器的创建与触发 272
16.4.2 触发器的删除 273
16.5 PHP与存储过程、触发器 273
16.5.1 PHP调用存储过程 273
16.5.2 PHP调用触发器 274
16.6 小结 276
第17章 Session与Cookie 277
17.1 Session与Cookie简介 277
17.2 PHP中Session的实现 278
17.2.1 标识开始使用Session 278
17.2.2 Session预定义数组 278
17.2.3 Session的检测与注销 278
17.2.4 PHP中Session处理的定制 279
17.3 Session应用实例——登录验证 283
17.3.1 数据库设计 283
17.3.2 HTML表单的设计 284
17.3.3 验证页面的编写 285
17.3.4 欢迎页面的编写 286
17.3.5 注销页面的编写 286
17.3.6 代码的运行 286
17.3.7 代码的改进 287
17.4 PHP中Cookie的实现 287
17.4.1 Cookie语法格式 288
17.4.2 Cookie预定义数组 288
17.4.3 创建一个Cookie 288
17.4.4 创建一个有时间限制的Cookie 289
17.4.5 创建一个有范围限制的Cookie 289
17.4.6 删除Cookie 289
17.4.7 浏览器重定向 290
17.4.8 Cookie的常见问题 290
17.5 Cookie应用实例——登录验证 291
17.5.1 HTML表单的设计 291
17.5.2 验证页面的编写 292
17.5.3 欢迎页面的编写 293
17.5.4 代码的运行 293
17.6 Cookie与Session的比较 294
17.7 小结 294
第18章 MySQL与PHP的应用实例——留言本 296
18.1 留言本实例的系统分析 296
18.1.1 系统简介 296
18.1.2 系统模型设计 296
18.1.3 数据库设计 297
18.1.4 公共功能设计 298
18.2 使用MySql与PHP创建一个留言本 299
18.2.1 查看留言功能 299
18.2.2 发表留言功能 302
18.2.3 管理员身份验证功能 304
18.2.4 管理首页设计 306
18.2.5 留言回复功能 308
18.2.6 留言删除功能 310
18.2.7 留言回复删除功能 311
18.2.8 留言审批功能 311
18.2.9 退出管理员登录功能 312
18.3 小结 312