简介
《PHP与MySQL权威指南》内容简介:phpchina官方出品,discuz!创始人戴志康、uchome创始人李国德、thinkphp创始人刘晨、phpcms项目负责人王参加等联袂推荐。
《php与mysql权威指南》是目前为止最全面的关于php与mysql开发技术的书籍之一,系统而全面地讲解了php与mysql技术的方方面面,适合初中级的php程序员系统地学习;《PHP与MySQL权威指南》也是目前为止首本系统而深入地讲解ucenter、discuz!、uchome、shopnc、phpcms等php产品的二次开发技术的著作,适合有一定开发经验、需要学习php二次开发技术的中高级程序员。
《php与mysql权威指南》分为五个部分:第一部分首先介绍了php最常用的服务器apache的工作原理和使用方法,然后逐步介绍了php与mysql开发环境在windows和linux系统下的搭建;第二部分系统地讲解了php的语法特性,第三部分详细地阐述了mysql的基本使用方法和技巧,掌握了这两部分的内容,即掌握了php与mysql开发所必须具备的所有基础知识;第四部分以实际项目案例的方式对ucenter、discuz!、uchome、shopnc、phpcms等php产品的二次开发技术进行了深入的讲解;第五部分是附录,收录了ucenter、discuz!、uchome、shopnc、phpcms等产品的数据字典,可供读者开发时查阅。
目录
《php与mysql权威指南》
推荐序
作者简介
前言
第一部分 准 备 篇
第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篇
第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.9 php5中的特殊方法 / 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篇
第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 导出数据
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
第四部分 二次开发实战篇
第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
推荐序
作者简介
前言
第一部分 准 备 篇
第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篇
第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.9 php5中的特殊方法 / 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篇
第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 导出数据
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
第四部分 二次开发实战篇
第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
PHP and MySQL:the definitive guide
光盘服务联系方式: 020-38250260 客服QQ:4006604884
云图客服:
用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问
Video Player
×
Audio Player
×
pdf Player
×