第一部分 准 备篇 2
第1章Apache基础 2
1.1 Apache介绍 2
1.1.1 Apache工作原理 2
1.1.2 Apache的特点 2
1.2 Windows下Apache的部署 3
1.2.1 Windows下Apache的安装和配置 3
1.2.2启动、停止和重新启动Apache服务 6
1.2.3 Apache支持PHP语言 8
1.3 httpd.conf深入剖析 10
1.3.1站点的基本配置 10
1.3.2服务器优化配置 10
1.3.3 HTTP响应头的信息配置 11
1.3.4持久性连接配置 12
1.4日志记录 12
1.4.1日志的配置 12
1.4.2错误日志 14
1.4.3访问日志 14
1.5虚拟主机 16
1.5.1基于主机名的虚拟主机 16
1.5.2基于IP地址的虚拟主机 18
1.6 URL重写 18
1.6.1 mod_ rewrite模块 18
1.6.2常用指令 19
1.7实战案例 25
1.7.1防止图片盗链 25
1.7.2 Apache伪静态 25
1.7.3用户访问权限设置 26
1.8小结 28
第2章PHP与MySQL开发环境的搭建 29
2.1在Windows上安装IIS 29
2.2 PHP的安装和配置 30
2.2.1在Windows下的安装和配置 30
2.2.2在Linux下的安装和配置 34
2.3 MySQL的安装和配置 37
2.3.1 Windows下的安装和配置 37
2.3.2 Linux下的安装和配置 40
2.4 PHP与MySQL连接 41
2.5小结 43
第二部分 PHP篇 46
第3章PHP基础 46
3.1 PHP的工作原理 46
3.2 PHP的版本变迁 46
3.3 PHP的特性 47
3.4 PHP的应用范围 48
3.5 PHP的基本语法 48
3.5.1 PHP标记 48
3.5.2 PHP中的注释 48
3.5.3编写你的第一个PHP应用 49
3.6 PHP中的变量与常量 49
3.6.1变量 49
3.6.2常量 52
3.7表达式 53
3.7.1表达式分类 53
3.7.2表达式的应用 54
3.7.3操作数 55
3.7.4操作符 55
3.8 PHP中的数据类型 56
3.8.1布尔型 56
3.8.2整型 56
3.8.3字符串 56
3.8.4数组 57
3.8.5对象 58
3.8.6其他类型 58
3.9强制类型转换 59
3.9.1显式和隐式强制类型转换 59
3.9.2有用的强制类型转换函数 59
3.10 PHP的语句 59
3.10.1循环语句 59
3.10.2条件判断语句 61
3.11小结 62
第4章字符串和正则表达式 63
4.1什么是字符串 63
4.2定义一个字符串 63
4.2.1使用单引号 63
4.2.2使用双引号 63
4.2.3使用定界符 64
4.3获取字符串 65
4.4拼接字符串 66
4.5字符串的格式化 66
4.6修改字母大小写 68
4.7计算字符串长度和字符数目 68
4.8字符串查找函数 70
4.8.1字符串的查找 70
4.8.2取得字符串的位置 71
4.9字符串的复制和替换 71
4.9.1字符串的复制 72
4.9.2字符串的替换 72
4.10字符串的比较 72
4.11正则表达式的概念和语法 73
4.11.1基本模式匹配 73
4.11.2字符集 74
4.11.3重复 75
4.12使用正则表达式查找子字符串 76
4.13使用正则表达式分割字符串 76
4.14小结 77
第5章数组 78
5.1数组的基本概念 78
5.1.1什么是数组 78
5.1.2数组操作符 78
5.2数字索引数组 79
5.2.1数字索引数组的初始化 79
5.2.2访问数组的内容 79
5.2.3使用循环访问数组 80
5.3数组的创建和添加 81
5.3.1创建数组 81
5.3.2添加数组 81
5.4数组元素的添加和删除 82
5.4.1在数组头添加元素 82
5.4.2在数组尾添加元素 82
5.4.3从数组头删除元素 83
5.4.4从数组尾删除元素 83
5.5数组的遍历 84
5.6字符串与数组之间的转换 85
5.7多维数组 85
5.8数组的排序 86
5.8.1 sort()和rsort() 86
5.8.2 asort()和arsort() 87
5.8.3 ksort()和krsort() 87
5.8.4随机排序函数shuffle() 87
5.8.5多维数组的排序 87
5.9数组判断函数 88
5.10数组的合并与拆分 89
5.10.1合并函数array_ merge() 89
5.10.2合并函数array_ combine() 90
5.10.3拆分函数array_ chunk() 90
5.10.4返回数组交集的函数array _intersect() 91
5.10.5将数组转换成标量变量 91
5.11快速初始化数组 92
5.11.1 range()函数 92
5.11.2 array_fill()函数 92
5.12在数组中查找值 93
5.13定位数组元素 93
5.13.1搜索数组 94
5.13.2获取数组键 94
5.13.3获取数组值 95
5.14小结 95
第6章PHP对文件的操作 96
6.1打开/关闭文件 96
6.1.1打开文件 96
6.1.2关闭文件 97
6.2读取文件 97
6.2.1 fread()和file()函数 97
6.2.2 fpassthru()函数 98
6.2.3 fgets()和fgetss()函数 98
6.2.4 fgetcsv()函数 99
6.3写入文件 99
6.4方便的文件处理函数 100
6.5其他文件处理函数 101
6.6移动文件指针小案例 102
6.7文件锁定 102
6.8小结 103
第7章PHP函数与代码的重用性 104
7.1定义和调用函数 104
7.2参数 105
7.2.1按值传递 106
7.2.2按引用传递 107
7.2.3默认参数值 107
7.3函数内的变量范围 108
7.3.1局部变量 108
7.3.2静态变量 108
7.3.3全局变量 109
7.4函数的作用域和可用性 110
7.5用变量存储函数的名称 111
7.6递归函数 112
7.7使用和包含文件 113
7.7.1 include与require的应用 113
7.7.2 PHP模板化 115
7.8小结 116
第8章 面向对象的程序设计 117
8.1类和对象的关键概念 117
8.1.1类 117
8.1.2对象 118
8.1.3字段 119
8.1.4属性 120
8.1.5常量 121
8.1.6方法 121
8.1.7 $this关键字 122
8.2构造方法和析构方法 122
8.2.1构造方法 123
8.2.2析构方法 124
8.3静态类成员 125
8.3.1静态属性 125
8.3.2静态方法 125
8.4对象克隆 126
8.4.1_clone一个对象 126
8.4.2_clone()方法 127
8.5继承 127
8.5.1如何继承一个类 127
8.5.2使用parent:关键字 128
8.5.3 instanceof关键字 129
8.5.4覆盖父类的方法 129
8.6多态 130
8.7抽象类和接口 132
8.7.1抽象类 132
8.7.2接口 132
8.7.3抽象类与接口的区别 134
8.8命名空间 134
8.9PHP5中的特殊方法 137
8.9.1_toString() 137
8.9.2_autoload() 138
8.9.3_get()方法和_set()方法 138
8.9.4_call 139
8.10小结 139
第9章PHP的错误、异常处理和调试 140
9.1常见的错误类型 140
9.1.1语法错误 140
9.1.2逻辑错误 140
9.1.3未定义错误 141
9.1.4环境错误 141
9.1.5运行错误 142
9.2错误处理机制 142
9.2.1错误级别列表 142
9.2.2错误处理函数 144
9.2.3自定义错误页面 144
9.2.4错误日志 145
9.3异常处理 146
9.3.1异常的基本使用 146
9.3.2 PHP的基本异常类 147
9.3.3 try、 throw和catch 147
9.3.4创建自定义的exception类 148
9.3.5多个异常 149
9.3.6重新抛出异常 151
9.3.7设置顶层异常处理器(Top Level Exception Handler) 152
9.3.8异常的规则 152
9.4使用Xdebug进行调试 152
9.4.1 Xdebug的安装 153
9.4.2 Xdebug的使用 154
9.4.3 Xdebug的特制函数 155
9.5小结 156
第10章PHP与HTML的交互 157
10.1 PHP和Web表单 157
10.1.1表单基本操作 157
10.1.2表单安全性 159
10.1.3常用表单数据的验证方法 162
10.2通过PHP上传文件 164
10.2.1 PHP文件上传/资源指令 164
10.2.2上传错误消息 164
10.2.3 PHP文件上传示例 165
10.3小结 167
第二部分 MySQL篇 170
第11章MySQL部署与基本使用 170
11.1 MySQL概述 170
11.1.1 MySQL为何如此流行 170
11.1.2 MySQL特性 171
11.2登录与退出MySQL 173
11.3创建、删除数据库和用户 174
11.4 MySQL用户管理及权限分配 174
11.4.1 MySQL访问权限系统 175
11.4.2设置用户权限 176
11.4.3 GRANT和REVOKE命令 177
11.5 MySQL优化 179
11.6小结 181
第12章数据库操作:PHP+MySQL 182
12.1 mysql扩展 182
12.1.1数据库连接 182
12.1.2向数据库中插入数据 183
12.2 mysqli扩展 186
12.2.1 mysqli的面向对象和面向过程编程方式 186
12.2.2预准备语句 189
12.2.3多查询 191
12.3数据库抽象层 192
12.3.1 PDO 192
12.3.2 ADODB 195
12.4小结 200
第13章MySQL中SQL语句的应用 201
13.1 SQL语句的基本应用 201
13.2常数列的最大值 202
13.3拥有某列最大值的行 202
13.4按组排列的最大值 203
13.5提取某列在组间的最大值 203
13.6使用用户变量 203
13.7使用AUTO_INCREMENT 204
13.8常用的字符串函数 205
13.9常用的日期和时间函数 208
13.10导入数据 211
13.10.1 LOAD DATA INFILE 211
13.10.2 mysqlimport 212
13.11导出数据 213
13.11.1 SELECT INTO OUTFILE 213
13.11.2 mysqldump 214
13.12小结 214
第14章MySQL数据库开发 215
14.1 MySQL的数据列类型 215
14.1.1数值类型列 215
14.1.2字符串类型列 216
14.2字符集支持 217
14.3索引的使用 219
14.3.1数据库索引 219
14.3.2主要索引介绍 220
14.3.3索引最佳实践 221
14.4事务处理 222
14.4.1非事务实现方法 222
14.4.2事务实现方法 223
14.5外键与数据的完整性 227
14.6数据库内部语句和语法 234
14.6.1 ALTER DATABASE语法 234
14.6.2 ALTER TABLE语法 234
14.6.3 CREATE DATABASE语法 238
14.6.4 CREATE INDEX语法 239
14.6.5 CREATE TABLE语法 239
14.6.6 DROP DATABASE语法 243
14.6.7 DROP INDEX语法 244
14.6.8 DROP TABLE语法 244
14.6.9 RENAME TABLE语法 244
14.7数据库操作语句和语法 245
14.7.1 DELETE语法 245
14.7.2 DO语法 246
14.7.3 HANDLER语法 247
14.7.4 INSERT语法 248
14.7.5 LOAD DATA INFILE语法 253
14.7.6 FIELDS分隔符 254
14.7.7 REPLACE语法 257
14.7.8 SELECT语法 258
14.7.9 TRUNCATE语法 261
14.7.10 UPDATE语法 262
14.7.11 EXPLAIN语法 263
14.8存储过程 267
14.9小结 268
第15章MySQL数据管理 269
15.1 MySQL的分区 269
15.1.1 RANGE分区 271
15.1.2 LIST分区 273
15.1.3 RANGE和LIST分区的管理 275
15.2 MySQL的备份 280
15.3 MySQL的恢复 281
15.4 MySQL复制 281
15.5小结 283
第16章MySQL的存储引擎及表类型 284
16.1 MyISAM存储引擎 285
16.1.1 MyISAM启动选项 286
16.1.2损坏的MyISAM表 287
16.1.3未被适当关闭的表的问题 288
16.2 InnoDB存储引擎 288
16.2.1 InnoDB配置 289
16.2.2 InnoDB启动选项 293
16.2.3创建InnoDB表空间 296
16.2.4处理InnoDB初始化问题 297
16.2.5备份和恢复InnoDB数据库 297
16.2.6添加和删除InnoDB数据和日志文件 298
16.3 MERGE存储引擎 299
16.4 MEMORY(HEAP)存储引擎 302
16.5 BDB(BerkeleyDB)存储引擎 303
16.5.1 BDB支持的操作系统 303
16.5.2 BDB启动选项 303
16.6 EXAMPLE存储引擎 304
16.7 FEDERATED存储引擎 304
16.7.1 FEDERATED存储引擎的描述 304
16.7.2如何使用FEDERATED表 305
16.7.3 FEDERATED存储引擎的局限性 306
16.8 ARCHIVE存储引擎 306
16.9 CSV存储引擎 307
16.10 BLACKHOLE存储引擎 307
16.11 MySQL最新版本的功能 308
16.12小结 308
第17章phpMyAdmin 309
17.1 phpMyAdmin的安装与配置 309
17.1.1 phpMyAdmin的安装 309
17.1.2 phpMyAdmin的配置 310
17.1.3 phpMyAdmin配置完成后可能遇到的问题 311
17.2 phpMyAdmin的使用 311
17.2.1 phpMyAdmin的登录 311
17.2.2 phpMyAdmin基本功能介绍 312
17.2.3数据库管理 317
17.2.4数据表管理 318
17.2.5数据记录管理 322
17.3小结 323
第四部分 二次开发实战篇 326
第18章Smarty应用 326
18.1什么是模板引擎 328
18.2 Smarty模板引擎 329
18.3 Smarty的安装及初始化配置 330
18.3.1安装Smarty 331
18.3.2初始化Smarty类库的默认设置 331
18.3.3程序注释 333
18.3.4简单示例 333
18.4 Smarty的使用步骤 335
18.5变量使用 336
18.5.1模板中输出PHP分配的变量 336
18.5.2使用保留变量 338
18.6变量调解器 339
18.7模板的控制结构 349
18.7.1条件选择结构:if-elseif-else 350
18.7.2 foreach 351
18.7.3 section 352
18.8 Smarty缓存 353
18.8.1在Smarty中控制缓存 354
18.8.2每个页面使用多个缓存 355
18.8.3为缓存实例消除处理开销 356
18.8.4清除缓存 357
18.8.5关闭局部缓存 358
18.9小结 359
第19章Zend系列开发工具 360
19.1 Zend Core集成环境 360
19.1.1 Zend Core介绍 360
19.1.2 Zend Core的安装 361
19.2 Zend Optimizer优化器 365
19.2.1 Zend Optimizer介绍 365
19.2.2 Zend Optimizer的安装 365
19.2.3 Zend Optimizer的优化及配置 368
19.3 Zend Studio开发工具 369
19.3.1 Zend Studio介绍 369
19.3.2 Zend Studio的下载与安装 371
19.3.3 Zend Studio功能及组件 374
19.3.4 Zend Studio的用户界面 375
19.3.5 Zend Studio项目管理 386
19.4 Zend Server服务器 393
19.4.1 Zend Server简介 393
19.4.2 Zend Server安装 395
19.5 Zend Guard安全卫士 397
19.5.1 Zend Guard简介 398
19.5.2 Zend Guard安装 398
19.5.3使用Zend Guard加密文件 400
19.6 Zend Platform应用平台 406
19.6.1 Zend Platform概述 406
19.6.2 Zend Platform的安装 407
19.7小结 412
第20章SVN版本控制及团队管理 413
20.1基本概念 413
20.1.1什么是版本控制 413
20.1.2什么是Subversion 413
20.1.3什么是版本库 414
20.2 SVN服务器的安装与配置 414
20.2.1基于svnserve的SVN配置 414
20.2.2基于Apache的SVN服务器 421
20.3客户端工具TortoiseSVN 424
20.3.1什么是TortoiseSVN 425
20.3.2下载与安装TortoiseSVN 425
20.3.3 TortoiseSVN使用 428
20.4小结 449
第21章UCenter开发实战 450
21.1 UCenter总述 450
21.1.1 UCenter简介 450
21.1.2 UCenter安装 452
21.1.3使用UCenter 458
21.2 UCenter源代码分析 463
21.2.1 UCenter系统架构 464
21.2.2 UCenter的目录结构 464
21.2.3 UCenter核心代码:/index.php 465
21.2.4 UCenter核心代码:/admin.php 468
21.3 UCenter接口原理 469
21.3.1接口函数定义的程序文件/uc_ client/client.php 469
21.3.2通知接口文件uc.php 488
21.4 UCenter接口开发实例——读取论坛主题或帖子数量信息 493
21.5小结 496
第22章Discuz!论坛开发实战 497
22.1 Discuz!总述 497
22.1.1 Discuz!简介 497
22.1.2 Discuz!特性 498
22.1.3 Discuz!安装 498
22.1.4使用Discuz! 503
22.2 Discuz!的源代码分析 510
22.2.1 Discuz!系统架构 510
22.2.2 Discuz!数据库结构 510
22.2.3 Discuz!的目录及文件结构 513
22.2.4 Discuz!核心代码:/include/common.inc.php 514
22.2.5 Discuz!核心代码:/include/global.func.php 533
22.2.6 Discuz!核心代码:/include/db_mysql.class.php 538
22.2.7 Discuz!核心代码:/include/template.func.php 540
22.2.8 Discuz!核心代码:/include/cache.func.php 543
22.2.9 Discuz!核心代码:/admincp.php 545
22.3 Discuz!的二次开发实例——多语言切换(一) 548
22.3.1改造目录结构 548
22.3.2修改数据库 548
22.3.3修改language()函数 549
22.3.4修改template()函数 549
22.3.5修改parse_ template()函数 550
22.4 Discuz!的二次开发实例——多语言切换(二) 551
22.4.1插件模块概述 551
22.4.2多语言切换后台管理 555
22.4.3获取用户选择或系统设定的语言包信息 558
22.4.4制作语言包切换菜单 559
22.4.5编写插件语言包 561
22.5小结 561
第23章UCenter Home SNS系统开发实战 562
23.1 UCenter Home总述 562
23.1.1 UCenter Home简介 562
23.1.2 UCenter Home的安装 563
23.1.3 UCenter Home的使用 568
23.2 UCenter Home源代码分析 582
23.2.1 UCenter Home目录及文件结构 582
23.2.2核心代码:/source/common.php 583
23.2.3核心代码:/source/function_common.php 587
23.2.4核心代码:/source/class_mysql.php 594
23.2.5核心代码:/do.php 595
23.3 UCenter Home的内部机制 598
23.3.1 UCenter Home模板机制 598
23.3.2 UCenter Home缓存机制 600
23.3.3 UCenter Home登录验证机制 602
23.3.4 UCenter Home道具机制 604
23.3.5 UCenter Home任务的计划机制 605
23.3.6 UCenter Home动态机制 608
23.3.7 UCenter Home评论机制 611
23.3.8 UCenter Home权限机制 613
23.4 UCenter Home的二次开发实例——《记账本》插件 616
23.4.1《记账本》代码设计 616
23.4.2《记账本》插件的安装说明 621
23.5小结 621
第24章ShopNC多用户商城开发实战 622
24.1 ShopNC总述 622
24.1.1 ShopNC综合多用户商城系统简介 622
24.1.2 ShopNC的安装 622
24.2 ShopNC多用户商城的源代码分析 625
24.2.1 ShopNC多用户商城的系统特性 625
24.2.2 ShopNC系统结构 626
24.2.3 ShopNC模板引擎 627
24.2.4核心模块的简要说明 627
24.2.5核心模块的详细描述 628
24.2.6核心模块的使用说明 675
24.3 ShopNC插件的开发 677
24.4 ShopNC支付接口 683
24.5 ShopNC商品页静态化 685
24.6 ShopNC商品图片上传 686
24.7小结 688
第25章PHPCMS V9内容管理系统开发实战 689
25.1 PHPCMS V9总述 689
25.1.1 PHPCMS简介 689
25.1.2 PHPCMS V9的新特性 690
25.1.3 PHPCMS V9的安装 694
25.2 PHPCMS源码分析 698
25.2.1目录及文件结构 698
25.2.2模板语法规则 702
25.3 PHPCMS V9二次开发介绍 703
25.3.1开发接口概述 703
25.3.2系统类库与函数库的调用 703
25.3.3理解模块和控制器 704
25.3.4二次开发的命名规范 704
25.3.5二次开发的流程 704
25.3.6二次开发技巧 705
25.4 PC标签的使用说明 706
25.4.1 PC标签概述 706
25.4.2 PC标签的语法 707
25.4.3 PC标签的保留参数 707
25.4.4 PC标签数据的显示 708
25.4.5 PC标签的分类 708
25.4.6 PC标签工具箱 708
25.5 PHPCMS和UCenter的整合 711
25.5.1 PHPSSO简介 711
25.5.2 PHPSSO与UCenter的整合 711
25.5.3 PHPSSO与UCenter整合的常见问题 715
25.6 PHPCMS二次开发实例——留言本 716
25.6.1需求分析 717
25.6.2数据库和数据表的设计 718
25.6.3创建模块目录 718
25.6.4创建数据模型类文件 719
25.6.5开发模块控制器和函数 720
25.7小结 736
附录A Comsenz产品开发——UCenter 1.5数据字典 737
附录B Discuz! 7.0.0数据字典 743
附录C UC Home 2.0数据字典 765
附录D ShopNC 2.0数据字典 793
附录E PHPCMS V9数据字典 812
后记 849