PHP和MySQL Web应用开发核心技术

PHP和MySQL Web应用开发核心技术
作 者: Marc Wandschneider 马朝晖 温继文
出版社: 机械工业出版社
丛编项: 开发人员专业技术丛书
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: php
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  本书提供作译者介绍Marc Wandschneider是具有13年从业经验的专业软件开发者。作为Developer Tools部门的主要开发者和管理者,他在微软工作了5年多时间,然后开始周游世界——学习语言并且帮助公司开发软件。他现在主要研究开放源代码软件,包括Linux、FreeBSD、Qt以及PHP和MySQL。...

内容简介

本书介绍使用PHP和MySQL构建健壮的Web数据库应用程序的方法,涉及范围从前端设计和计划,直到测试和部署。本书主要内容包括:保护Web应用程序,构建Web服务,验证输入,访问数据,管理会话等技术,处理MySQL以及其他数据库(如Oracle和PostgreSQL等)的技术。书中讲解3个完整的Web应用程序案例,附带光盘提供本书全部代码。.本书适合Web应用程序开发人员参考。本书详细讲解了3个应用程序的构建过程:一个日程安排系统、一个博客引擎以及一个电子商务商店。细致分析如何创建健壮的Web数据库应用程序,以及如何避免困扰许多PHP和MySQL开发者的常见错误。本书是为程序员提供的综合且实用的指南,教他们使用PHP和MySQL开发具有产品品质的、使用数据库的Web应用程序。本书不仅包括编写代码,而且介绍前端应用程序、用户界面和数据库设计,还有安全性、测试以及更多内容。◆从PHP开发的入门开始,包括代码组织、重用和面向对象的PHP。◆对数据访问详细讨论,包含事务处理、外键和索引。..◆利用PHP正则表达式的功能强大的数据验证技术。◆介绍计划Web应用程序,包括用户界面和用户管理。◆提供关于保证Web应用程序安全性的系统化指南。◆涵盖广泛的实现问题——包括国际化、错误处理、数据验证、调试、会话管理和部署。◆关于XML、基于XML的Web服务和用于可重用PHP组件的PEAR框架。◆如何使用Oracle和PostgreSQL数据库。◆本书配套光盘内容为本书的源代码(包括3个完整的应用程序)。[看更多]

图书目录

第一部分 PHP基础

第1章 开始了解PHP 1

1.1 第一个PHP程序 1

1.2 输入PHP脚本 3

1.2.1 标示PHP代码段落 3

1.2.2 混合PHP和HTML 4

1.2.3 语句和注释 5

1.3 如何存储数据 6

1.4 输入PHP的基本类型 7

1.4.1 数字 7

1.4.2 字符串 9

1.4.3 布尔值 12

1.5 一些非常有用的函数 12

1.5.1 nl2br 12

1.5.2 var_dump 13

1.5.3 print_r 13

1.5.4 var_export 14

1.6 小结 14

第2章 PHP语言 15

2.1 输入字符串的更多介绍 15

2.2 数据类型的更多介绍 17

2.2.1 数组 17

2.2.2 对象 18

2.2.3 特殊类型和值 18

2.3 强制类型转换 19

2.3.1 基础 19

2.3.2 特殊强制类型转换 20

2.3.3 有用的强制类型转换函数 23

2.4 变量和常量 24

2.4.1 定义常量 24

2.4.2 按值和按引用的变量 25

2.4.3 变量范围 26

2.4.4 变量生存周期 26

2.4.5 预定义变量 27

2.5 表达式和操作符 27

2.5.1 操作符:组合表达式 27

2.5.2 组合表达式和操作符的过程 33

2.6 控制结构 34

2.6.1 if语句 34

2.6.2 switch语句 35

2.6.3 while/do...while循环 37

2.6.4 for循环 37

2.6.5 foreach循环 38

2.6.6 中断循环 38

2.7 小结 39

第3章 代码组织和重用 40

3.1 基本代码重用:函数 40

3.1.1 定义和调用函数 40

3.1.2 把参数传递给函数 42

3.1.3 从函数返回值 47

3.1.4 函数内的变量范围 48

3.1.5 函数范围和可用性 50

3.1.6 把函数作为变量使用 52

3.2 中级代码重用:使用和包含文件 53

3.2.1 把代码组织到文件中 53

3.2.2 选择文件名和位置 55

3.2.3 在脚本中包含库文件 57

3.2.4 把包含用于页面模板化 61

3.3 小结 62

第4章 面向对象的程序设计 63

4.1 超越库之外 63

4.2 面向对象的程序设计 65

4.2.1 一些基本术语 66

4.2.2 PHP中对象的基础 66

4.2.3 初始化和清除对象 70

4.2.4 可见性:控制看这些内容的人 72

4.2.5 把静态数据添加到类 74

4.3 扩展对象 78

4.3.1 扩展已有的类 78

4.3.2 再次讲解可见性 78

4.3.3 基类方法的重新实现 79

4.3.4 使类的行为相同:多态性 80

4.4 其他特性 87

4.4.1 对象的比较 87

4.4.2 对象的克隆 88

4.4.3 用户界面友好的输出 89

4.4.4 类型提示 90

4.4.5 自动加载 90

4.5 小结 91

第5章 处理数组 92

5.1 再次介绍数组 92

5.1.1 创建数组和添加数据 92

5.1.2 访问数组中的元素 95

5.1.3 删除数组元素和整个数组 97

5.1.4 计算数组中元素的数量 97

5.2 数组元素的迭代 98

5.2.1 foreach循环 98

5.2.2 常规循环 99

5.2.3 内部循环计数器以及each、next、 prev、pos和reset 100

5.2.4 array_walk方法 101

5.3 多维数组 102

5.4 对数组的操作 103

5.4.1 数组排序 104

5.4.2 其他数组操作 106

5.5 小结 108

第6章 世界上的字符串和字符 109

6.1 字符串和PHP 109

6.2 字符集和Unicode 109

6.2.1 ASCII 109

6.2.2 ISO 8859字符集 110

6.2.3 远东地区字符集 110

6.2.4 Unicode 111

6.2.5 Unicode编码 111

6.3 了解PHP中字符集的处理 111

6.3.1 处理其他字符集 112

6.3.2 问题的出现 113

6.3.3 我们应该如何处理字符 113

6.4 配置PHP处理Unicode 114

6.4.1 安装以及配置mbstring和mbregex 114

6.4.2 函数重载 115

6.5 对字符串的操作 115

6.5.1 获得信息 115

6.5.2 整理字符串 117

6.5.3 搜索和比较 118

6.5.4 提取 121

6.5.5 大小写操作 122

6.5.6 字符编码转换 122

6.6 小结 123

第7章 与服务器进行交互:表单 124

7.1 一个表单的范例 124

7.2 处理HTML表单 126

7.2.1 把表单添加到页面中 126

7.2.2 如何提交数据 128

7.2.3 在脚本中访问表单数据 130

7.2.4 字符集和表单 132

7.3 服务器的操作 132

7.3.1 服务器的注意事项 133

7.3.2 服务器变量 133

7.3.3 环境变量 136

7.4 重新定向用户 137

7.5 小结 139

第二部分 数据库基础

第8章 数据库介绍 141

8.1 我们讨论的是什么 141

8.1.1 基础 141

8.1.2 关系型数据库 142

8.2 使用DBMS的动机 143

8.2.1 与简单文件或者电子表格的比较 143

8.2.2 数据库服务器 143

8.3 主要的数据库服务器 144

8.3.1 MySQL 144

8.3.2 PostgreSQL 145

8.3.3 Oracle数据库 145

8.3.4 Microsoft SQL Server 145

8.3.5 其他服务器 145

8.4 如何选择数据库服务器 145

8.4.1 考虑你的数据 146

8.4.2 能力 146

8.4.3 性能 146

8.4.4 是否可以从PHP访问 146

8.4.5 费用 146

8.5 我们的选择 147

8.6 通用接口 147

8.7 小结 148

第9章 设计和创建数据库 149

9.1 把什么存放到数据库中 149

9.2 组织数据 150

9.2.1 主键 150

9.2.2 选择数据类型 151

9.2.3 把数据组织到表中 153

9.2.4 便于更快搜索的索引 155

9.3 SQL简介 156

9.4 创建数据库 157

9.4.1 与数据库服务器对话 157

9.4.2 连接和身份验证 157

9.4.3 创建数据库 158

9.5 设置用户权限 159

9.5.1 准备创建用户 159

9.5.2 创建用户 161

9.5.3 删除用户或者删除权限 161

9.6 创建表 162

9.6.1 SQL数据类型 162

9.6.2 数据库服务器客户的生存周期 164

9.6.3 创建表 165

9.6.4 表存储引擎 166

9.6.5 创建索引 167

9.6.6 外键和级联删除 167

9.7 删除表和数据库 169

9.8 小结 169

第10章 使用数据库:存储和检索数据 170

10.1 准备工作 170

10.2 把数据插入表 170

10.2.1 INSERT INTO语句 170

10.2.2 批量数据插入 171

10.2.3 日期类型条目 173

10.3 检索表中的数据 174

10.3.1 基本语法 175

10.3.2 在检索表数据时进行组合 176

10.3.3 对检索出的数据进行排序 179

10.3.4 一次获得少量行 180

10.4 修改表中的数据 180

10.5 删除表中的数据 181

10.6 小结 181

第11章 使用数据库:高级数据访问 183

11.1 事务处理 183

11.1.1 问题 183

11.1.2 解决方案 184

11.1.3 编写事务处理 185

11.1.4 一个比较复杂的问题 185

11.2 更高级的查询 188

11.2.1 组合表达式 188

11.2.2 指定值的集合和范围 188

11.2.3 获得惟一的值 189

11.2.4 查询中的SQL函数 189

11.2.5 对聚合函数数据进行分组 193

11.3 修改表模式 194

11.4 小结 195

第12章 PHP和数据访问 196

12.1 准备工作 196

12.2 连接和身份验证 197

12.2.1 事件序列 197

12.2.2 建立连接 198

12.2.3 设置连接字符集 199

12.3 执行查询 199

12.3.1 检索数据 200

12.3.2 验证用户输入 202

12.3.3 插入、删除和更新数据 204

12.3.4 事务处理 205

12.3.5 来自mysqli的错误 206

12.4 预备语句 208

12.4.1 绑定参数 208

12.4.2 绑定结果 209

12.5 旧式接口 210

12.5.1 过程式数据库接口的基础知识 210

12.5.2 持久性连接 212

12.6 小结 213

第三部分 规划Web应用程序

第13章 Web应用程序和因特网 215

13.1 详细讲解World Wide Web 215

13.1.1 因特网:并没有你想像的那么复杂 215

13.1.2 计算机和计算机的通信 216

13.1.3 超文本传输协议 217

13.1.4 MIME类型 219

13.1.5 安全套接字层(SSL) 220

13.1.6 其他重要协议 222

13.2 设计Web应用程序 222

13.2.1 术语 222

13.2.2 基本布局 222

13.2.3 用户界面 224

13.2.4 业务逻辑 224

13.2.5 后端/服务器 227

13.2.6 n层体系结构 227

13.2.7 性能和稳定性 228

13.3 小结 229

第14章 实现用户界面 230

14.1 用户界面的注意事项 230

14.1.1 了解你的用户界面 230

14.1.2 计划用户界面 231

14.1.3 帮助出现问题的用户 233

14.1.4 设计技巧和策略 234

14.2 实现用户界面 235

14.2.1 级联样式单(CSS) 235

14.2.2 包含文件 237

14.2.3 生成用户界面的代码库 238

14.2.4 实现用户界面驱动 242

14.3 小结 243

第15章 用户管理 244

15.1 用户如何连接到我们的应用程序 244

15.2 访问者和已知用户 246

15.3 用户身份验证 247

15.3.1 部分和完全登录 247

15.3.2 在什么位置存储用户信息 247

15.3.3 存储什么和不存储什么 248

15.4 小结 249

第16章 保护Web应用程序:规划和代码 的安全性 250

16.1 处理安全性问题的策略 250

16.1.1 最重要的事情 250

16.1.2 安全性和可用性之间的平衡 251

16.1.3 开发工作完成之后 251

16.1.4 我们的基本方法 251

16.2 标识威胁 251

16.2.1 威胁 252

16.2.2 造成威胁的人 253

16.3 保护代码 254

16.3.1 黄金法则 254

16.3.2 过滤输入 255

16.3.3 代码的组织 259

16.3.4 代码中的内容 260

16.3.5 文件系统注意事项 260

16.3.6 代码稳定性和bug 261

16.3.7 执行引用和exec 261

16.4 小结 262

第17章 保护Web应用程序:软件和硬件 安全性 263

17.1 保护Web服务器和PHP 263

17.1.1 保持软件为最新版本 263

17.1.2 php.ini 264

17.1.3 Web服务器配置 264

17.1.4 虚拟服务器 265

17.1.5 商业托管的Web应用程序 266

17.2 安全套接字层(SSL) 267

17.3 数据库的安全性 268

17.3.1 用户和权限系统 268

17.3.2 把数据发送到服务器 269

17.3.3 连接到服务器 269

17.3.4 运行服务器 269

17.4 保护网络 270

17.4.1 防火墙 270

17.4.2 DMZ 270

17.4.3 了解DoS和DDoS攻击 271

17.5 计算机和操作系统的安全性 271

17.5.1 保持操作系统为最新版本 271

17.5.2 只运行必须的程序 271

17.5.3 服务器的物理安全 271

17.6 灾难计划 272

17.7 小结 272

第四部分 实现Web应用程序

第18章 错误处理和调试 273

18.1 错误是如何出现的 273

18.1.1 来自PHP的错误 273

18.1.2 我们代码中的缺陷 274

18.1.3 外部错误 275

18.2 PHP如何处理错误 276

18.2.1 PHP如何显示错误 276

18.2.2 PHP生成哪些错误 276

18.2.3 处理错误 277

18.2.4 配置PHP的错误处理 282

18.3 异常 282

18.3.1 异常的基础知识 282

18.3.2 处理异常 284

18.3.3 未处理的异常 287

18.3.4 扩展异常 288

18.4 调试 290

18.4.1 测试代码 290

18.4.2 源代码调试器 292

18.5 小结 292

第19章 cookie和会话 293

19.1 cookie:诱人并且有用 293

19.1.1 基本操作 293

19.1.2 cookie如何工作 296

19.1.3 控制cookie的有效性 297

19.1.4 删除cookie 298

19.1.5 cookie数组 298

19.1.6 把什么放到cookie中 298

19.1.7 能力监视器 298

19.2 会话 299

19.2.1 基本用法 300

19.2.2 配置PHP的会话 301

19.2.3 如何传输会话ID 302

19.2.4 使用会话存储数据 303

19.2.5 页面缓存 306

19.2.6 破坏会话 307

19.2.7 会话存储如何工作 308

19.3 会话的安全性 312

19.3.1 获得会话ID 312

19.3.2 限制泄密的会话ID造成的损害 313

19.4 小结 314

第20章 用户身份验证 315

20.1 成员计划 315

20.2 Web服务器提供的身份验证 317

20.2.1 基本的HTTP身份验证 317

20.2.2 Microsoft Windows身份验证方案 321

20.3 实现自己的身份验证 322

20.3.1 配置数据库来处理登录 322

20.3.2 添加新的用户 323

20.3.3 登录用户 331

20.3.4 更新需要用户登录的页面 337

20.3.5 注销用户 340

20.3.6 删除用户 342

20.4 小结 343

第21章 高级输出和输出缓冲 344

21.1 全球化和地区 344

21.1.1 地区及其属性 344

21.1.2 了解用户所在地区 345

21.1.3 设置当前页面的地区(Unix) 346

21.1.4 设置当前页面的地区(Windows) 347

21.1.5 了解当前地区 349

21.2 格式化输出 349

21.2.1 数字的格式化 350

21.2.2 货币值 350

21.2.3 其他格式化函数 353

21.3 输出缓冲 355

21.3.1 输出缓冲如何工作 355

21.3.2 使用输出缓冲 356

21.3.3 编写自己的处理程序 357

21.4 小结 358

第22章 使用正则表达式进行数据验证 359

22.1 使用正则表达式 359

22.1.1 正则表达式是什么 359

22.1.2 设置 360

22.1.3 测试表达式 360

22.1.4 基本搜索 361

22.1.5 字符类 362

22.1.6 边界 363

22.1.7 点号 364

22.1.8 重复模式 364

22.1.9 分组和选择 365

22.1.10 技巧和陷阱 365

22.2 使用正则表达式进行数据验证 366

22.2.1 验证用户名 366

22.2.2 匹配电话号码 366

22.2.3 匹配邮政编码 367

22.2.4 匹配电子邮件地址 367

22.3 其他正则表达式函数 368

22.3.1 ereg_replace 368

22.3.2 split 370

22.4 小结 371

第23章 XML和XHTML 372

23.1 XML 372

23.1.1 XML是什么 372

23.1.2 为什么使用XML 373

23.1.3 基本术语 373

23.1.4 XML文档的结构 374

23.1.5 命名空间 378

23.1.6 验证XML 380

23.1.7 相关技术 381

23.2 在PHP中处理XML 382

23.2.1 使用SAX还是DOM 383

23.2.2 使用DOM 383

23.3 XHTML 392

23.3.1 为什么使用XHTML 393

23.3.2 如何处理XHTML 393

23.3.3 转换为XHTML 395

23.4 小结 395

第24章 文件和目录 396

24.1 访问文件 396

24.1.1 打开文件 396

24.1.2 关闭文件 398

24.1.3 读取文件 398

24.1.4 写入文件 400

24.1.5 文件权限和其他信息 402

24.1.6 删除和重命名文件 404

24.2 访问目录 404

24.2.1 路径操作 404

24.2.2 使用类浏览目录内容 405

24.2.3 使用函数浏览目录内容 406

24.2.4 改变当前目录 406

24.2.5 创建和删除目录 406

24.3 安全性注意事项 407

24.4 小结 408

第25章 上载文件 409

25.1 上载用户文件 409

25.1.1 文件上载如何工作 409

25.1.2 为上载配置PHP 409

25.1.3 客户表单 410

25.1.4 服务器代码 411

25.1.5 限制上载文件的大小 414

25.1.6 处理多个文件 415

25.2 上载文件范例 416

25.2.1 设置 416

25.2.2 新账号表单 417

25.2.3 创建新的账户 417

25.2.4 查看用户数据 420

25.2.5 从数据库获得图像 422

25.3 安全性注意事项 423

25.3.1 只允许可信用户 423

25.3.2 拒绝服务 424

25.3.3 文件验证 424

25.3.4 恶意文件名 424

25.4 小结 424

第26章 处理日期和时间 425

26.1 日期和时间的来源 425

26.1.1 PHP 425

26.1.2 操作系统 425

26.1.3 数据库服务器 426

26.1.4 Web页面和用户 426

26.2 PHP中的日期和时间 427

26.2.1 PHP中的时间戳 427

26.2.2 获得日期和时间 428

26.2.3 验证日期和时间 431

26.2.4 比较日期和时间 432

26.2.5 输出格式化的日期和时间 435

26.2.6 时间戳的问题 437

26.3 数据库服务器中更多的日期和时间 438

26.3.1 常用数据库服务器中的日期和时间范围 438

26.3.2 增加或者减去时间间隔 438

26.3.3 解析数据库中的日期 439

26.3.4 MySQL和时间戳 439

26.4 小结 440

第27章 XML Web服务和SOAP 441

27.1 XML Web服务 441

27.1.1 建立阶段 441

27.1.2 进入XML Web服务 441

27.1.3 查找Web服务 442

27.2 Web服务如何工作 443

27.2.1 SOAP 443

27.2.2 WSDL 444

27.2.3 HTTP 449

27.2.4 XML-RPC 450

27.3 在PHP中使用Web服务 450

27.3.1 选择Web服务 450

27.3.2 配置PHP 452

27.3.3 处理服务 452

27.4 范例:处理Google API 456

27.4.1 为使用Google API进行设置 456

27.4.2 更多地了解服务 456

27.4.3 搜索如何工作 457

27.4.4 搜索关键字 459

27.5 小结 463

第28章 使用PEAR 464

28.1 PEAR介绍 464

28.1.1 代码库 464

28.1.2 PEAR基础类 464

28.1.3 支持社区 465

28.1.4 PECL 465

28.2 安装和配置 465

28.2.1 Unix用户 465

28.2.2 Windows用户 465

28.3 基本命令 467

28.3.1 获得帮助 467

28.3.2 列出包 467

28.3.3 下载和安装包 468

28.3.4 获得信息 470

28.3.5 更新现有包 470

28.3.6 卸载包 471

28.3.7 PEAR配置选项 471

28.4 范例:使用日期类 472

28.4.1 安装 472

28.4.2 基本使用 472

28.4.3 更多范例 473

28.5 小结 474

第29章 开发和部署 475

29.1 编码标准 475

29.1.1 关于样式的担心 475

29.1.2 开发编码标准文档 476

29.1.3 争论 479

29.1.4 其他注意事项 479

29.2 源代码控制 480

29.2.1 我的目的是什么 480

29.2.2 它们如何工作 480

29.2.3 选择源代码控制系统 483

29.2.4 处理源代码控制 484

29.3 测试 485

29.3.1 为什么要费力进行测试 485

29.3.2 单元测试 486

29.3.3 性能和负载测试 489

29.3.4 bug控制 491

29.4 部署 491

29.4.1 测试服务器 491

29.4.2 过程的脚本编写和自动化 491

29.4.3 部署到运营服务器 492

29.5 小结 493

第五部分 范例工程和更多概念

第30章 开发成功Web应用程序的策略 495

30.1 单实例对象 495

30.2 会话管理 497

30.2.1 配置 497

30.2.2 安全性 498

30.2.3 将所有东西组合在一起 499

30.3 整体的错误处理方式 501

30.3.1 用户错误与应用程序错误 501

30.3.2 替换默认的处理程序 503

30.3.3 向用户显示错误 506

30.3.4 创建新的异常类 508

30.4 数据库连接管理 509

30.4.1 更好的途径 510

30.4.2 最佳途径 512

30.4.3 改进了的新的字符串转义函数 514

30.5 PHP配置设置 514

30.5.1 总体设置 514

30.5.2 多字节字符串设置 515

30.5.3 错误设置 515

30.5.4 数据库设置 515

30.6 小结 515

第31章 预约管理器 517

31.1 概述 517

31.2 安装和运行范例 518

31.3 结构和页面流程 519

31.3.1 页面结构 519

31.3.2 数据库布局 521

31.3.3 UI策略 522

31.3.4 完整文件清单 524

31.4 查看代码 525

31.4.1 AppointmentManager类 525

31.4.2 处理日期和时间 529

31.4.3 处理表单和页面流程 532

31.4.4 显示星期和月 538

31.5 建议/练习 541

31.5.1 改变天视图和周视图 541

31.5.2 星期一到星期日的星期显示 542

31.5.3 删除或者移动预约 542

31.5.4 转换为PEAR Date类 542

31.5.5 允许重叠预约 542

31.5.6 构成多用户系统 542

31.6 小结 542

第32章 博客引擎 543

32.1 概述 543

32.2 安装和运行范例 544

32.3 结构和页面流程 545

32.3.1 页面布局 545

32.3.2 数据库结构和说明 546

32.3.3 UI策略 548

32.3.4 完整文件清单 549

32.4 查看代码 550

32.4.1 用户界面生成 550

32.4.2 用户管理 553

32.4.3 跟踪登录的用户 559

32.4.4 管理条目和评论 564

32.5 建议/练习 570

32.5.1 改进主页上的用户清单 571

32.5.2 允许匿名评论 571

32.5.3 分层的评论 571

32.5.4 用事务进行用户创建 571

32.5.5 实现新的strip_tags函数 571

32.6 小结 572

第33章 电子商务应用程序 573

33.1 概述 573

33.2 安装和运行范例 574

33.3 结构和页面流程 575

33.3.1 范例的代码结构 575

33.3.2 页面布局 577

33.3.3 数据库结构 577

33.3.4 UI策略 581

33.3.5 完整文件清单 582

33.4 查看代码 584

33.4.1 浏览产品 584

33.4.2 实现购物车 586

33.4.3 结账流程 589

33.4.4 提交订单 598

33.4.5 安全性 604

33.5 付款处理 604

33.6 建议/练习 605

33.6.1 跳过发货信息 605

33.6.2 发送订单处理 605

33.6.3 管理页面 605

33.6.4 订单状态/取消订单 605

33.7 小结 606

附 录

附录A 安装/配置 607

附录B 等效的数据库功能 624

附录C 推荐的读物 629