第一篇基础篇 18
第1章 了解PHP 18
1.1什么是PHP 19
1.2选择PHP的理由 19
1.3如何学好编程 22
1.4准备PHP的开发条件 24
1.4.1下载 PHP及相关软件 24
1.4.2代码编辑工具 24
1.4.3下载PHP用户手 26
1.5本章小结 26
第2章 准备开发PHP的条件 27
2.1 AppServ—Windows版PHP集成化安装包 28
2.1.1用AppServ搭建PHP开发环境 28
2.1.2 测试AppServ是否安装成功 30
2.2 XAMPP—Linux版PHP集成化安装包 31
2.2.1用XAMPP搭建PHP开发环境 32
2.2.2在Linux操作系统下启动、停止XAMPP 33
2.2.3设置Linux版XAMPP中MySQL数据库root用户的密码 33
2.2.4在Linux操作系统下编写第一个PHP程序 33
2.3 PHP开发环境的关键配置信息 34
2.3.1 Apache服务器的基本配置 34
2.3.2 PHRINI文件的基本配置 35
2.4解决PHP的常见配置问题 36
2.4.1解决Apache服务器端口冲突 36
2.4.2更改Apache服务器默认存储的文件路径 36
2.4.3在PHP.INI文件中更改上传文件的大小 37
2.4.4增加PHP扩展模块 37
2.4.5检测PHP是否支持MySQL数据库 38
2.5 Dreamweaver开发工具 38
2.5.1情景应用一—Dreamweaver中编码格式的选择 38
2.5.2情景应用二—Dreamweaver创建表格 39
2.5.3情景应用三—Dreamweaver创建表单 43
2.5.4情景应用四—Dreamweaver创建站点 45
2.5.5情景应用五—Dreamweaver创建第一个PHP程序 46
2.6本章小结 47
第3章 了解Web页面的设计 48
3.1 XHTML基础 49
3.1.1 XHTML语言的语法 49
3.1.2 XHTML文件的结构 51
3.1.3编辑文字版面 53
3.1.4插入图像与链接 55
3.1.5编写XHTML表格 57
3.1.6设计XHTML表单 58
3.1.7情景应用一—编写用户注册信息页 61
3.1.8情景应用二:文件域上传文件 62
3.2 CSS样式应用 63
3.2.1将CSS样式嵌入到HTML中 63
3.2.2 CSS选择符 65
3.2.3常见的CSS样式属性 67
3.2.4情景应用—打造经典的导航栏 72
3.3设计页面布局 74
3.3.1 ﹤div>和<span>标记 74
3.3.2区块模型 74
3.3.3区块浮动 75
3.3.4情景应用—设置一行两列浮动布局 77
3.4实战练习 78
3.4.1 CSS+DIV设计网站首页 78
3.4.2 DIV标签设计论坛后台管理页面 79
3.5本章小结 81
第4章PHP开发基础 82
4.1 PHP的工作原理 83
4.2学习运用代码注释 83
4.2.1使用PHP注释 84
4.2.2使用HTML注释 84
4.2.3有效使用注释 85
4.3 PHP的常量应用 85
4.3.1声明和使用常量 85
4.3.2预定义常量 87
4.4 PHP的变量应用 88
4.4.1理解变量 88
4.4.2声明变量 88
4.4.3变量作用域 89
4.4.4可变变量 91
4.5 PHP的数据类型 92
4.5.1标量数据类型 92
4.5.2复合数据类型 96
4.5.3特殊数据类型 97
4.5.4转换数据类型 98
4.5.5检测数据类型 100
4.6 PHP的运算符 101
4.6.1算术运算符 101
4.6.2字符串运算符 102
4.6.3赋值运算符 102
4.6.4位运算符 103
4.6.5递增或递减运算符 103
4.6.6逻辑运算符 104
4.6.7比较运算符 105
4.6.8三元运算符 105
4.6.9运算符的使用规则 106
4.7 PHP的自定义函数 107
4.7.1定义和调用函数 108
4.7.2在函数间传递参数 109
4.7.3函数的返回值 110
4.8实战练习 111
4.8.1网站中最新动态模块的中文字符串截取 111
4.8.2论坛发布内容模块中对内容的格式化输出 112
4.9本章小结 113
第5章PHP流程控制语句 115
5.1程序三种控制结构 116
5.1.1顺序结构 116
5.1.2选择(分支)结构 116
5.1.3循环结构 116
5.2条件控制语句 117
5.2.1 if条件控制语句 117
5.2.2 switch多分支语句 119
5.2.3情景应用一—if语句判断美女征婚条件 121
5.2.4情景应用二—switch网页框架 122
5.3循环控制语句 123
5.3.1 while循环语句 124
5.3.2 do … while循环语句 124
5.3.3 for循环语句 125
5.3.4 foreach循环语句 127
5.3.5情景应用一—while语句循环读取数据库中数据 128
5.3.6情景应用二—for循环语句开发一个乘法口诀表 129
5.4跳转语句 130
5.4.1 break跳转语句 130
5.4.2 continue跳转语句 131
5.4.3 return跳转语句 132
5.5包含语句 133
5.5.1 include()语句 133
5.5.2 require()语句 134
5.5.3 include_once()语句 135
5.5.4 require_once()语句 135
5.5.5 include()语句和require()语句的区别 136
5.5.6 include once()语句和require_once()语句的区别 138
5.6实战练习 138
5.6.1删除数据库中指定的数据表 138
5.6.2 for循环语句实现多图片上传 139
5.7本章小结 140
第6章 字符串操作 141
6.1初识字符串 142
6.2转义、还原字符串 142
6.3截取字符串 143
6.4分割、合成字符串 145
6.5替换字符串 146
6.5.1 str_ireplace()函数 146
6.5.2 substr_replace()函数 148
6.6检索字符串 148
6.6.1 strstr()函数 148
6.6.2 substr_count()函数 149
6.7去掉字符串首尾空格和特殊字字 150
6.7.1 ltrimQ函数 150
6.7.2 rtrim()函数 151
6.7.3 trim()函数 152
6.8字符串与HTML转换 152
6.9情景应用 154
6.9.1超长文本的分页输出 154
6.9.2查询关键字描红 155
6.9.3购物车中数据的读取 156
6.10实战练习 157
6.10.1 PHP 5新型字符串输出XML数据信息 157
6.10.2图像验证码的相关操作 158
6.11本章小结 159
第7章 正则表达式 160
7.1什么是正则表达式 161
7.2正则表达式的语法规则 162
7.2.1行定位符(?和$) 162
7.2.2单词定界符(\b、\B ) 162
7.2.3字符类([]) 163
7.2.4选择字符(|) 163
7.2.5连字符(-) 163
7.2.6排除字符(?) 164
7.2.7限定符(?*+{n,m }) 164
7.2.8点号字符(.) 164
7.2.9转义字符(\) 165
7.2.10反斜线(\) 165
7.2.11括号字符(()) 166
7.2.12情景应用一—整合实用的正则表达式 166
7.2.13情景应用二—调用正则表达式验证中文 168
7.3 PCRE兼容正则表达式函数 169
7.3.1字符串的匹配与查找 169
7.3.2情景应用一—应用正则表达式匹配电话号码格式 170
7.3.3字符串的替换 172
7.3.4情景应用二—应用正则表达式实现UBB使用帮助 173
7.3.5字符串的分割 173
7.4实战练习 174
7.4.1正则表达式验证用户注册信息的合理性 174
7.4.2正则表达式验证提交的购买数量是否是正整数 176
7.5本章小结 177
第8章 初探数组 178
8.1数组概述 179
8.2数组类型 179
8.3声明数组 180
8.3.1用户创建数组 180
8.3.2函数创建数组 181
8.3.3创建二维数组 181
8.4遍历、输出数组 182
8.4.1遍历数组 183
8.4.2输出数组元素 184
8.5 PHP的数组函数 185
8.5.1统计数组元素个数 185
8.5.2向数组中添加元素 185
8.5.3获取数组中最后一个元素 186
8.5.4删除数组中重复元素 186
8.5.5获取数组中指定元素的键名 186
8.5.6字符串与数组的转换 187
8.5.7情景应用—读取网上调查中的数据 188
8.6 PHP的全局数组 189
8.6.1 $_SERVER[]全局数组 189
8.6.2$_GET[]和$POST[]全局数组 190
8.6.3 $_COOKIE全局数组 190
8.6.4 $_ENV[]全局数组 191
8.6.5 $_REQUEST[]全局数组 191
8.6.6$_SESSION[]全局数组 191
8.6.7$_FILES[]全全局数 191
8.6.8情景应用—$_FILES[]全局数组在文件上传中的应用 191
8.7实战练习 193
8.7.1生成在线考试题 193
8.7.2通过获取客户端IP地址限制投票次数 193
8.8本章小结 195
第9章 日期与时间 196
9.1 PHP的时间观念 197
9.1.1在PHP.INI文件中设置时区 197
9.1.2通过date_default_timezone_set函数设置时区 197
9.2 UNIX时间戳 198
9.2.1获取任意日期、时间的时间戳 198
9.2.2获取当前时间戳 199
9.2.3日期、时间转换为UNIX时间戳 199
9.3日期和时间处理 201
9.3.1格式化日期和时间 201
9.3.2获取日期和时间信息 202
9.3.3检验日期和时间的有效性 203
9.4情景应用 204
9.4.1获取系统当前时间和时间戳 204
9.4.2比较两个时间的大小 204
9.4.3倒计时 205
9.5实战练习 205
9.5.1计算程序的运行时间 205
9.5.2网页闹钟 206
9.6本章小结 207
第二篇核心篇 210
第10章 文件和目录处理技术 210
10.1基本的文件处理技术 211
10.1.1打开一个文件 211
10.1.2读取文件内容 214
10.1.3向文件中写入数据 218
10.1.4关闭文件指针 220
10.2目录操作技术 220
10.2.1打开指定目录 220
10.2.2读取目录结构 221
10.2.3关闭目录指针 222
10.3文件的上传技术 223
10.3.1开启文件上传功能 223
10.3.2全局变量$_FILES应用 224
10.3.3将上传文件移动到指定目录 225
10.3.4文件下载技术 226
10.4情景应用 227
10.4.1通过文本文件统计网站访问量 227
10.4.2规范化的文件上传 229
10.5实战练习 231
10.5.1从文本文件中读取注册服务条款 231
10.5.2规范化的多文件上传 232
10.6本章小结 233
第11章 图形图像处理技术 234
11.1了解GD2函数库 235
11.2设置GD2函数库 235
11.3学习常用的图像处理技术 235
11.3.1创建画布 236
11.3.2颜色处理 237
11.3.3绘制文字 237
11.3.4输出图像 239
11.3.5销毁图像 240
11.3.6情景应用一—在照片上书写文字 240
11.3.7情景应用二—GD2函数生成图像验证码 241
11.4运用Jpgraph类库绘制图像 242
11.4.1 Jpgraph类库简介 242
11.4.2 Jpgraph的安装 242
11.4.3情景应用一—柱状图展示2010年第一季度编程词典销量 243
11.4.4情景应用二—折线图分析2010年公司销售额 245
11.4.5情景应用三—多饼形图分析2010年图书销量 246
11.5实战练习 248
11.5.1 GD2函数生成带有干扰线的图像验证码 248
11.5.2 Jpgraph创建折线图分析图书销售走势 249
11.5.3 Jpgraph创建3D饼形图展示部门业绩比较 250
11.6本章小结 251
第12章Cookie和会话控制 252
12.1会话的操作 253
12.1.1创建会话 253
12.1.2配置PHP的会话 255
12.2会话的高级应用 259
12.2.1 SESSION临时文件 259
12.2.2 SESSION缓存 259
12.2.3 SESSION数据库存储 261
12.3 Cookie的操作 263
12.3.1设置Cookie 264
12.3.2访问Cookie 265
12.3.3删除Cookie 266
12.4情景应用 267
12.4.1登录验证 267
12.4.2 Cookie自动登录 269
12.5实战练习 270
12.5.1防止页面刷新 270
12.5.2控制客户端Cookie 271
12.6本章小结 272
第13章 面向对象 273
13.1一切皆是对象 274
13.1.1什么是类 274
13.1.2对象的由来 274
13.1.3面向对象的特点 275
13.2类的声明 275
13.2.1类的定义 275
13.2.2成员属性 276
13.2.3成员方法 277
13.3类的实例化 277
13.3.1创建对象 278
13.3.2访问类中成员 278
13.3.3特殊的访问方法—“$this”和“∷” 279
13.3.4构造方法和析构方法 280
13.4面向对象的封装特性 281
13.4.1 public(公共成员) 282
13.4.2 private(私有成员) 282
13.4.3 protected(保护成员) 283
13.5面向对象的继承特性 283
13.5.1类的继承—xtends关键字 283
13.5.2类的继承—parent∷关键字 284
13.5.3覆盖父类方法 285
13.6抽象类和接口 286
13.6.1抽象类 286
13.6.2接口 287
13.7面向对象的多态性 289
13.7.1通过继承实现多态 289
13.7.2通过接口实现多态 290
13.8面向对象的关键字 290
13.8.1 final关键字 291
13.8.2 static关键字—声明静态类成员 291
13.8.3 clone关键字—克隆对象 292
13.8.4对象比较 293
13.8.5 instanceof关键字—对象类型检测 293
13.9面向对象的魔术方法 293
13.9.1_set()和_get()方法 294
13.9.2_isset()和_unset()方法 294
13.9.3_call方法 294
13.9.4_toString()方法 295
13.9.5_autoload方法 295
13.9.6情景应用一—封装一个数据库连接类 296
13.9.7情景应用二—封装一个数据库操作类 297
13.10实战练习 298
13.10.1分页类 299
13.10.2万用表格 300
13.11本章小结 301
第14章MySQL数据库设计 302
14.1 MySQL概述 303
14.1.1 MySQL的特点 303
14.1.2 SQL和MySQL 303
14.2 MySQL服务器的启动和关闭 304
14.2.1启动MySQL服务器 304
14.2.2连接MySQL服务器 305
14.2.3关闭MySQL服务器 305
14.3操作MySQL数据库 306
14.3.1创建新数据库 306
14.3.2选择指定数据库 306
14.3.3删除指定数据库 306
14.4操作MySQL数据表 307
14.4.1创建一个表 307
14.4.2查看数据表结构 308
14.4.3修改数据表结构 309
14.4.4重命名数据表 310
14.4.5删除指定数据表 310
14.5操作MySQL数据 311
14.5.1向数据表中添加数据(INSERT) 311
14.5.2更新数据表中数据(UPDATE) 312
14.5.3删除数据表中数据(DELETE) 312
14.5.4查询数据表中数据 313
14.5.5情景应用一—数据排序 316
14.5.6情景应用二—limit控制输出数据的开始位置和记录数 316
14.6 MySQL数据类型 316
14.6.1数字类型 317
14.6.2字符串类型 317
14.6.3日期和时间数据类型 319
14.7用phpMyAdmin管理MySQL数据库 319
14.7.1管理数据库 319
14.7.2管理数据表 320
14.7.3管理数据记录 322
14.7.4导入/导出数据 324
14.8实战练习 325
14.8.1批量添加记录 (LOAD DATA和MYSQLIMPORT) 325
14.8.2在phpMyAdmin中重置MySQL服务器登录密码 326
14.9本章小结 326
第15章 数据库编程技术 327
15.1 PHP操作MySQL数据库的步骤 328
15.2 PHP操作MySQL数据库的方法 329
15.2.1 mysql connect()函数连接MySQL服务器 329
15.2.2 mysql_select db()函数选择MySQL数据库 330
15.2.3 mysql_query()函数执行SQL语句 330
15.2.4 mysql_fetch_array()函数将结果集返回到数组中 331
15.2.5 mysql_fetch_row()函数从结果集中获取一行作为枚举数组 333
15.2.6 mysql_num rows()函数获取查询结果集中的记录数 333
15.3管理MySQL数据库中的数据 334
15.3.1向数据库中添加数据 334
15.3.2编辑数据库数据 335
15.3.3从数据库中删除数据 336
15.3.4批量数据操作 336
15.4情景应用 337
15.4.1通用查询 337
15.4.2分组统计 338
15.4.3对查询结果分页显示 339
15.4.4站内搜索 340
15.5实战练习 341
15.5.1对查询结果进行跳转分页显示 341
15.5.2高级查询 341
15.6本章小结 342
第三篇 高级篇 346
第16章PDO数据库抽象层 346
16.1什么是PDO 347
16.1.1 PDO概述 347
16.1.2 PDO特点 347
16.1.3安装PDO 347
16.2 PDO连接数据库 348
16.2.1 PDO构造函数 348
16.2.2情景应用一—连接MySQL数据库 348
16.2.3情景应用二—连接MSSQL Server数据库 349
16.2.4情景应用三—连接Oracle数据库 350
16.3 PDO中执行SQL语句 350
16.3.1 exec()方法 351
16.3.2 query()方法 351
16.3.3预处理语句—prepare()和execute() 352
16.3.4情景应用一—通过PDO向数据库中添加数据 353
16.3.5情景应用二—通过PDO更新数据库中数据 354
16.4 PDO中获取结果集 355
16.4.1 fetch()方法 355
16.4.2 fetchAll()方法 357
16.4.3 fetchColumnQ方法 358
16.5 PDO中捕获SQL语句中的错误 359
16.5.1使用默认模式—PDO::ERRMODE SILENT 359
16.5.2使用警告模式—PDO::ERRMODE WARNING 360
16.5.3使用异常模式—PDO::ERRMODE EXCEPTION 361
16.6 PDO中错误处理 362
16.6.1 errorCode()方法 362
16.6.2 errorInfo()方法 363
16.7 PDO中事务处理 364
16.8 PDO中存储过程 366
16.9实战练习 367
16.9.1 PDO读取MS SQL Server数据库中数据 367
16.9.2 PDO读取Oracle数据库中数据 368
16.10本章小结 369
第17章ADODB数据库抽象层 370
17.1 ADODB概述 371
17.1.1 ADODB的优点与缺点 371
17.1.2 ADODB的安装与操作流程 371
17.2连接数据库系统和数据库 372
17.2.1连接数据库系统—ADONewConnection()函数 372
17.2.2数据库持久化连接—PConnectQ函数 372
17.2.3数据库非持久化连接—Connect()函数 372
17.2.4情景应用一—ADODB连接MySQL数据库 373
17.2.5情景应用二—ADODB连接Access数据库 374
17.2.6情景应用三—ADODB连接MS SQL Server数据库 374
17.2.7情景应用四—ADODB连接Oracle数据库 375
17.3通过公共变量控制数据的存取方式 376
17.4 ADODB执行SQL语句 377
17.4.1执行SQL语句—executeQ函数 377
17.4.2控制SELECT查询语句的起始位置—SelectLimit()函数 378
17.4.3添加、更新数据一GetInsertSQLQ、GetUpdateSQL()函数 379
17.4.4操作SQL语句的其他方法 380
17.5 ADODB控制结果集 380
17.5.1控制指针的方法 381
17.5.2控制结果集内容的方法 382
17.5.3日期格式和数据类型的转换 383
17.6 ADODB中的分页 384
17.6.1 ADODB分页函数 384
17.6.2一个小巧的分页函数—ADODB Pager()函数 385
17.7 ADODB中的错误处理 386
17.7.1 ADODB中的错误处理函数 386
17.7.2 ADODB中自定义的错误处理机制 387
17.7.3情景应用—通过日志文件存储错误信息 388
17.8 ADODB中的事务处理 389
17.9实战练习 390
17.9.1封装ADODB连接数据库类 390
17.9.2封装ADODB操作数据库类 391
17.9.3封装ADODB分页类 392
17.9.4通过事务处理机制保证数据转换的顺利完成 393
17.10本章小结 395
第18章PHP的字符编码 396
18.1了解网页字符编码 397
18.1.1 ASCⅡ字符集 397
18.1.2 ISO 8859字符集 397
18.1.3 GB2312与GBK编码 398
18.1.4 Unicode字符集 398
18.1.5 UTF-8编码 398
18.2 PHP网页的字符编码 399
18.2.1设置编码格式 399
18.2.2转换编码格式 400
18.2.3检测字符串的编码 402
18.3 PHP开发中的乱码问题 403
18.3.1解决页面中的乱码问题 403
18.3.2数据库中的字符集编码问题 405
18.3.3避免截取中文字符串时出现乱码 406
18.4 PHP区域化设置 407
18.4.1 PHP网页的区域化 407
18.4.2使用sedocale()函数设置区域化 408
18.5实战练习 409
18.5.1避免截取超长文本时出现乱码 409
18.5.2了解PHP编码规则 410
18.5.3了解PHP编码风格 410
18.6本章小结 412
第19章 程序调试与错误处理 413
19.1基本调试策略 414
19.2常见错误分析 414
19.2.1语法错误 414
19.2.2定义错误 417
19.2.3逻辑错误 418
19.2.4运行错误 419
19.2.5环境错误 421
19.3 PHP.INI中的错误处理机制 422
19.3.1控制错误显示及显示方式 423
19.3.2控制错误的级别 423
19.4程序调试方法 424
19.4.1应用DIE语句调试 424
19.4.2应用mysql_error()语句输出错误信息 425
19.4.3应用try{}catch{}M语句抛出并捕获异常 425
19.5错误处理技巧 427
19.5.1隐藏错误 427
19.5.2自定义错误页面 427
19.5.3延长服务器执行时间—处理超时错误 428
19.6情景应用 429
19.6.1如何分析、解决PHP与MySQL连接错误 429
19.6.2解决数据库乱码问题 431
19.7实战练习 432
19.7.1封装属于自己的异常处理类 432
19.7.2使用错误处理器记录日志 433
19.8本章小结 434
第20章Smarrty模板技术 435
20.1走进Smarty模板引擎 436
20.1.1 Smarty模板引擎下载 437
20.1.2 Smarty模板引擎安装 437
20.1.3 Smarty模板引擎配置 437
20.1.4情景应用一—走进Smarty模板引擎 439
20.1.5情景应用二—封装Smarty模板的配置方法 440
20.2 Smarty模板设计—静态页处理 442
20.2.1基本语法(注释、函数和属性) 442
20.2.2 Smarty模板设计变量 443
20.2.3变量调节器 444
20.2.4情景应用一—Smarty模板中日期、时间的格式化输出 445
20.2.5情景应用二—通过组合修改器分隔多个变量调节器 445
20.2.6内建函数(动态文件、模板文件的包含和流程控制语句) 446
20.2.7情景应用三—Smarty模板创建网页框架 448
20.2.8情景应用四—section语句循环输出数据库中的数据 450
20.2.9自定义函数 451
20.2.10配置文件 454
20.3 Smarty程序设计—动态文件操作 455
20.3.1 SMARTY PATH常量 455
20.3.2 Smarty程序设计变量 455
20.3.3 Smarty方法 456
20.3.4 Smarty缓存 456
20.3.5情景应用—开启网站注册页面的缓存 458
20.4实战练习 460
20.4.1 Smarty+ADODB完成数据的分页输出 460
20.4.2 Smarty中通过truncate方法截取字符串 461
20.4.3用Register_Function方法注册模板函数 462
20.4.4 Smarty模板中的关键字描红 464
20.5本章小结 464
第四篇 实战篇 466
第21章 企业网站开发模板 466
21.1明日企业网概述 467
21.2开发背景 467
21.3需求分析 467
21.4功能结构 468
21.5数据库设计 469
21.5.1数据库概念设计 469
21.5.2创建数据库及数据表 470
21.6技术攻关 471
21.6.1 Smarty模板 471
21.6.2最简单的网页框架 473
21.6.3 ADODB类库 473
21.6.4封装分页类 474
21.7首页设计 475
21.7.1首页概述 475
21.7.2首页技术分析 476
21.7.3首页的实现过程 476
21.8产品展示设计 478
21.8.1产品展示概述 478
21.8.2产品展示技术分析 478
21.8.3产品展示实现过程 479
21.9后台管理系统设计 480
21.9.1后台管理系统概述 481
21.9.2后台管理系统技术分析 481
21.9.3后台管理系统实现过程 482
21.10程序调试与错误处理 486
21.10.1 SQL语句的返回机制 486
21.10.2错误处理 487
21.11开发总结 488
附录 专业术语表 489