导航推荐
PHP和MySQL Web开发(原书第4版)
简介
作者
目录
购买
评论 (0)
Laura Thomson是Mozilla公司的高级软件工程师。之前,她是OmniTI公司和Tangled Web Design公司的合伙人。此外,Laura曾经在RMIT大学和波士顿顾问集团工作过。她获得了应用科学(计算机科学)的学士学位和工程学(计算机系统工程)学士学位。在她的空闲时间,她非常喜欢骑马,讨论免费软件和开源软件以及睡觉。
Luke Welling是OmniTI公司的一位Web架构师,他经常在一些国际会议(例如,OSCON, ZendCon, MySQLUC,HPCon,OSDC以及LinuxTag)中就开源和Web开发的话题发表演讲。在加入OmniTI公司..
读者反馈
译者序
前言
作者简介
第一篇 使用PHP
第1章 PHP快速入门教程
- 1.1 开始之前:了解PHP
- 1.2 创建一个示例应用:Bob汽车零部件商店
- 1.2.1 创建订单表单
- 1.2.2 表单处理
- 1.3 在HTML中嵌入PHP
- 1.3.1 使用PHP标记
- 1.3.2 PHP语句
- 1.3.3 空格
- 1.3.4 注释
- 1.4 添加动态内容
- 1.4.1 调用函数
- 1.4.2 使用date()函数
- 1.5 访问表单变量
- 1.5.1 简短、中等以及长风格的表单变量
- 1.5.2 字符串的连接
- 1.5.3 变量和文本
- 1.6 理解标识符
- 1.7 检查变量类型
- 1.7.1 PHP的数据类型
- 1.7.2 类型强度
- 1.7.3 类型转换
- 1.7.4 可变变量
- 1.8 声明和使用常量
- 1.9 理解变量的作用域
- 1.10 使用操作符
- 1.10.1 算术操作符
- 1.10.2 字符串操作符
- 1.10.3 赋值操作符
- 1.10.4 比较操作符
- 1.10.5 逻辑操作符
- 1.10.6 位操作符
- 1.10.7 其他操作符
- 1.11 计算表单总金额
- 1.12 理解操作符的优先级和结合性:
- 1.13 使用可变函数
- 1.13.1 测试和设置变量类型
- 1.13.2 测试变量状态
- 1.13.3 变量的重解释
- 1.14 根据条件进行决策
- 1.14.1 if语句
- 1.14.2 代码块
- 1.14.3 else语句
- 1.14.4 elseif语句
- 1.14.5 switch语句
- 1.14.6 比较不同的条件
- 1.15 通过迭代实现重复动作
- 1.15.1 while循环
- 1.15.2 for和foreach循环
- 1.15.3 do...while循环
- 1.16 从控制结构或脚本中跳出
- 1.17 使用可替换的控制结构语法
- 1.18 使用declare
- 1.19 下一章
第2章 数据的存储与检索
- 2.1 保存数据以便后期使用
- 2.2 存储和检索Bob的订单
- 2.3 文件处理
- 2.4 打开文件
- 2.4.1 选择文件模式
- 2.4.2 使用fopen()打开文件
- 2.4.3 通过FTP或HTTP打开文件
- 2.4.4 解决打开文件时可能遇到的问题
- 2.5 写文件
- 2.5.1 fwrite()的参数
- 2.5.2 文件格式
- 2.6 关闭文件
- 2.7 读文件
- 2.7.1 以只读模式打开文件:fopen()
- 2.7.2 知道何时读完文件:feof()
- 2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv()
- 2.7.4 读取整个文件:readfile()、fpassthru()和file()
- 2.7.5 读取一个字符:fgetc()
- 2.7.6 读取任意长度:fread()
- 2.8 使用其他有用的文件函数
- 2.8.1 查看文件是否存在:file_exists()
- 2.8.2 确定文件大小:filesize()
- 2.8.3 删除一个文件:unlink()
- 2.8.4 在文件中定位:rewind()、fseek()和ftell()
- 2.9 文件锁定
- 2.10 更好的方式:数据库管理系统
- 2.10.1 使用普通文件的几个问题
- 2.10.2 RDBMS是如何解决这些问题的
- 2.11 进一步学习
- 2.12 下一章
第3章 使用数组
- 3.1 什么是数组
- 3.2 数字索引数组
- 3.2.1 数字索引数组的初始化
- 3.2.2 访问数组的内容
- 3.2.3 使用循环访问数组
- 3.3 使用不同索引的数组
- 3.3.1 初始化相关数组
- 3.3.2 访问数组元素
- 3.3.3 使用循环语句
- 3.4 数组操作符
- 3.5 多维数组
- 3.6 数组排序
- 3.6.1 使用sort()函数
- 3.6.2 使用asort()函数和ksort()函数对相关数组排序
- 3.6.3 反向排序
- 3.7 多维数组的排序
- 3.7.1 用户定义排序
- 3.7.2 反向用户排序
- 3.8 对数组进行重新排序
- 3.8.1 使用shuffle()函数
- 3.8.2 使用array_reverse()函数
- 3.9 从文件载入数组
- 3.10 执行其他的数组操作
- 3.10.1 在数组中浏览:each()、current()、reset()、end()、next()、pos()和prev()
- 3.10.2 对数组的每一个元素应用任何函数:array_walk()
- 3.10.3 统计数组元素个数:count()、sizeof()和array_count_values()
- 3.10.4 将数组转换成标量变量:extract()
- 3.11 进一步学习
- 3.12 下一章
第4章 字符串操作与正则表达式
- 4.1 创建一个示例应用程序:智能表单邮件
- 4.2 字符串的格式化
- 4.2.1 字符串的整理:chop()、ltrim()和trim()
- 4.2.2 格式化字符串以便显示
- 4.2.3 格式化字符串以便存储:addslashes()和stripslashes()
- 4.3 用字符串函数连接和分割字符串
- 4.3.1 使用函数explode()、implode()和join()
- 4.3.2 使用strtok()函数
- 4.3.3 使用substr()函数
- 4.4 字符串的比较
- 4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp()
- 4.4.2 使用strlen()函数测试字符串的长度
- 4.5 使用字符串函数匹配和替换子字符串
- 4.5.1 在字符串中查找字符串:strstr()、strchr()、strrchr()和stristr()
- 4.5.2 查找子字符串的位置:strpos()、strrpos()
- 4.5.3 替换子字符串:str_replace()、substr_replace()
- 4.6 正则表达式的介绍
- 4.6.1 基础知识
- 4.6.2 字符集和类
- 4.6.3 重复
- 4.6.4 子表达式
- 4.6.5 子表达式计数
- 4.6.6 定位到字符串的开始或末尾
- 4.6.7 分支
- 4.6.8 匹配特殊字符
- 4.6.9 特殊字符一览
- 4.6.10 在智能表单中应用
- 4.7 用正则表达式查找子字符串
- 4.8 使用正则表达式分割字符串
- 4.9 比较字符串函数和正则表达式函数
- 4.10 进一步学习
- 4.11 下一章
第5章 代码重用与函数编写
- 5.1 代码重用的好处
- 5.1.1 成本
- 5.1.2 可靠性
- 5.1.3 一致性
- 5.2 使用require()和include()函数
- 5.2.1 文件扩展名和require()语句
- 5.2.2 使用require()制作Web站点的模版
- 5.2.3 使用auto_prepend_file和auto_append_file
- 5.3 在PHP中使用函数
- 5.3.1 调用函数
- 5.3.2 调用未定义的函数
- 5.3.3 理解字母大小写和函数名称
- 5.4 理解为什么要定义自己的函数
- 5.5 了解基本的函数结构
- 5.5.1 函数命名
- 5.6 使用参数
- 5.7 理解作用域
- 5.8 参数的引用传递和值传递
- 5.9 使用Return关键字
- 5.9.1 从函数返回一个值
- 5.10 实现递归
- 5.10.1 名称空间
- 5.11 进一步学习
- 5.12 下一章
第6章 面向对象的PHP
- 6.1 理解面向对象的概念
- 6.1.1 类和对象
- 6.1.2 多态性
- 6.1.3 继承
- 6.2 在PHP中创建类、属性和操作
- 6.2.1 类的结构
- 6.2.2 构造函数
- 6.2.3 析构函数
- 6.3 类的实例化
- 6.4 使用类的属性
- 6.5 使用private和public关键字控制访问
- 6.6 类操作的调用
- 6.7 在PHP中实现继承
- 6.7.1 通过继承使用private和protected访问修饰符控制可见性
- 6.7.2 重载
- 6.7.3 使用final关键字禁止继承和重载
- 6.7.4 理解多重继承
- 6.7.5 实现接口
- 6.8 类的设计
- 6.9 编写类代码
- 6.10 理解PHP面向对象新的高级功能
- 6.10.1 使用Per-Class常量
- 6.10.2 实现静态方法
- 6.10.3 检查类的类型和类型提示
- 6.10.4 克隆对象
- 6.10.5 使用抽象类
- 6.10.6 使用__call()重载方法
- 6.10.7 使用__autoload()方法
- 6.10.8 实现迭代器和迭代
- 6.10.9 将类转换成字符串
- 6.10.10 使用Reflection(反射)API
- 6.11 下一章
第7章 错误和 异常处理
- 7.1 异常处理的概念
- 7.2 Exception类
- 7.3 用户自定义异常
- 7.4 Bob的汽车零部件商店应用程序的异常
- 7.5 异常和PHP的其他错误处理机制
- 7.6 进一步学习
- 7.7 下一章
第二篇 使用MySQL
第8章 设计Web数据库
- 8.1 关系数据库的概念
- 8.1.1 表格
- 8.1.2 列
- 8.1.3 行
- 8.1.4 值
- 8.1.5 键
- 8.1.6 模式
- 8.1.7 关系
- 8.2 如何设计Web数据库
- 8.2.1 考虑要建模的实际对象
- 8.2.2 避免保存冗余数据
- 8.2.3 使用原子列值
- 8.2.4 选择有意义的键
- 8.2.5 考虑需要询问数据库的问题
- 8.2.6 避免多个空属性的设计
- 8.2.7 表格类型的总结
- 8.3 Web数据库架构
- 8.4 进一步学习
- 8.5 下一章
第9章 创建Web数据库
- 9.1 使用MySQL监视程序
- 9.2 登录到MySQL
- 9.3 创建数据库和用户
- 9.4 设置用户与权限
- 9.5 MySQL权限系统的介绍
- 9.5.1 最少权限原则
- 9.5.2 创建用户:GRANT命令
- 9.5.3 权限的类型和级别
- 9.5.4 REVOKE命令
- 9.5.5 使用GRANT和REVOKE的例子
- 9.6 创建一个Web用户
- 9.7 使用正确的数据库
- 9.8 创建数据库表
- 9.8.1 理解其他关键字的意思
- 9.8.2 理解列的类型
- 9.8.3 用SHOW和DESCRIBE来查看数据库
- 9.8.4 创建索引
- 9.9 理解MySQL的标识符
- 9.10 选择列数据类型
- 9.10.1 数字类型
- 9.10.2 日期和时间类型
- 9.10.3 字符串类型
- 9.11 进一步学习
- 9.12 下一章
第10章 使用MySQL数据库
- 10.1 SQL是什么
- 10.2 在数据库中插入数据
- 10.3 从数据库中获取数据
- 10.3.1 获取满足特定条件的数据
- 10.3.2 从多个表中获取数据
- 10.3.3 以特定的顺序获取数据
- 10.3.4 分组与合计数据
- 10.3.5 选择要返回的行
- 10.3.6 使用子查询
- 10.4 更新数据库记录
- 10.5 创建后修改表
- 10.6 删除数据库中的记录
- 10.7 表的删除
- 10.8 删除整个数据库
- 10.9 进一步学习
- 10.10 下一章
第11章 使用PHP从Web访问MySQL数据库
- 11.1 Web数据库架构的工作原理
- 11.2 从Web查询数据库的基本步骤
- 11.2.1 检查与过滤用户输入数据
- 11.2.2 建立一个连接
- 11.2.3 选择使用的数据库
- 11.2.4 查询数据库
- 11.2.5 检索查询结果
- 11.2.6 从数据库断开连接
- 11.3 将新信息放入数据库
- 11.4 使用Prepared语句
- 11.5 使用PHP与数据库交互的其他接口
- 11.5.1 使用常规的数据库接口:PEAR MDB2
- 11.6 进一步学习
- 11.7 下一章
第12章 MySQL高级管理
- 12.1 深入理解权限系统
- 12.1.1 user表
- 12.1.2 db表和host表
- 12.1.3 tables_priv表,columns_priv表和procs_priv表
- 12.1.4 访问控制:MySQL如何使用Grant表
- 12.1.5 更新权限:修改什么时候生效
- 12.2 提高MySQL数据库的安全性
- 12.2.1 从操作系统角度来保护MySQL
- 12.2.2 密码
- 12.2.3 用户权限
- 12.2.4 Web问题
- 12.3 获取更多关于数据库的信息
- 12.3.1 使用SHOW获取信息
- 12.3.2 使用DESCRIBE获取关于列的信息
- 12.3.3 用EXPLAIN理解查询操作的工作过程
- 12.4 数据库的优化
- 12.4.1 设计优化
- 12.4.2 权限
- 12.4.3 表的优化
- 12.4.4 使用索引
- 12.4.5 使用默认值
- 12.4.6 其他技巧
- 12.5 备份MySQL数据库
- 12.6 恢复MySQL数据库
- 12.7 实现复制
- 12.7.1 设置主服务器
- 12.7.2 执行初始的数据传输
- 12.7.3 设置一个/多个从服务器
- 12.8 进一步学习
- 12.9 下一章
第13章 MySQL高级编程
- 13.1 LOAD DATA INFILE语句
- 13.2 存储引擎
- 13.3 事务
- 13.3.1 理解事务的定义
- 13.3.2 通过InnoDB使用事务
- 13.4 外键
- 13.5 存储过程
- 13.5.1 基本示例
- 13.5.2 局部变量
- 13.5.3 游标和控制结构
- 13.6 进一步学习
- 13.7 下一章
第三篇 电子商务与安全性
第14章 运营一个电子商务网站
- 14.1 我们要实现什么目标
- 14.2 考虑电子商务网站的类型
- 14.2.1 使用在线说明书公布信息
- 14.2.2 接收产品或服务的订单
- 14.2.3 提供服务和数字产品
- 14.2.4 为产品或服务增值
- 14.2.5 减少成本
- 14.3 理解风险和威胁
- 14.3.1 网络黑客
- 14.3.2 不能招揽足够的生意
- 14.3.3 计算机硬件故障
- 14.3.4 电力、通信、网络或运输故障
- 14.3.5 广泛的竞争
- 14.3.6 软件错误
- 14.3.7 不断变化的政府政策和税收
- 14.3.8 系统容量限制
- 14.4 选择一个策略
- 14.5 下一章
第15章 电子商务的安全问题
- 15.1 信息的重要程度
- 15.2 安全威胁
- 15.2.1 机密数据的泄露
- 15.2.2 数据丢失和数据破坏
- 15.2.3 数据修改
- 15.2.4 拒绝服务
- 15.2.5 软件错误
- 15.2.6 否认
- 15.3 易用性,性能、成本和安全性
- 15.4 建立一个安全政策
- 15.5 身份验证原则
- 15.6 加密技术基础
- 15.6.1 私有密钥加密
- 15.6.2 公有密钥加密
- 15.6.3 数字签名
- 15.7 数字证书
- 15.8 安全的Web服务器
- 15.9 审计与日志记录
- 15.10 防火墙
- 15.11 备份数据
- 15.11.1 备份常规文件
- 15.11.2 备份与恢复MySQL数据库
- 15.12 自然环境安全
- 15.13 下一章
第16章 Web应用的安全
- 16.1处理安全性问题的策略
- 16.1.1 以正确心态为开始
- 16.1.2 安全性和可用性之间的平衡
- 16.1.3 安全监视
- 16.1.4 基本方法
- 16.2 识别所面临的威胁
- 16.2.1 访问或修改敏感数据
- 16.2.2 数据丢失或破坏
- 16.2.3 拒绝服务
- 16.2.4 恶意代码注入
- 16.2.5 服务器被攻破
- 16.3了解与我们“打交道”的用户
- 16.3.1 破解人员
- 16.3.2 受影响机器的未知情用户
- 16.3.3 对公司不满的员工
- 16.3.4 硬件被盗
- 16.3.5 我们自身
- 16.4 代码的安全性
- 16.4.1 过滤用户输入
- 16.4.2 转义输出
- 16.4.3 代码组织
- 16.4.4 代码自身的问题
- 16.4.5 文件系统因素
- 16.4.6 代码稳定性和缺陷
- 16.4.7 执行引号和exec
- 16.5 Web服务器和PHP的安全性
- 16.5.1 保持软件的更新
- 16.5.2 查看php.ini文件
- 16.5.3 Web服务器配置
- 16.5.4 Web应用的商业主机服务
- 16.6 数据库服务器的安全性
- 16.6.1 用户和权限系统
- 16.6.2发送数据至服务器
- 16.6.3 连接服务器
- 16.6.4 运行服务器
- 16.7 保护网络
- 16.7.1 安装防火墙
- 16.7.2使用隔离区域(DMZ)
- 16.7.3应对DoS和DDoS攻击
- 16.8 计算机和操作系统的安全性
- 16.8.1 保持操作系统的更新
- 16.8.2只运行必须的软件
- 16.8.3 服务器的物理安全性
- 16.9 灾难计划
- 16.10 下一章
第17章 使用PHP和MySQL实现身份验证
- 17.1 识别访问者
- 17.2 实现访问控制
- 17.2.1 保存密码
- 17.2.2 密码的加密
- 17.2.3 保护多个网页
- 17.3 使用基本身份验证
- 17.4 在PHP中使用基本身份验证
- 17.5 在Apache的.htaccess文件中使用基本身份验证
- 17.6 使用mod_auth_mysql身份验证
- 17.6.1 安装mod_auth_mysql
- 17.6.2 使用mod_auth_mysql
- 17.7 创建自定义身份验证
- 17.8 进一步学习
- 17.9 下一章
第18章 使用PHP和MySQL实现安全事务
- 18.1 提供安全的事务处理
- 18.1.1 用户机器
- 18.1.2 Internet
- 18.1.3 我们的系统
- 18.2 使用加密套接字层(SSL)
- 18.3 屏蔽用户的输入
- 18.4 提供安全存储
- 18.5 存储信用卡号码
- 18.6 在PHP中使用加密技术
- 18.6.1 安装GPG
- 18.6.2 测试GPG
- 18.7 进一步学习
- 18.8 下一章
第四篇 PHP的高级技术
第19章 与文件系统和服务器的交互
- 19.1 文件上载
- 19.1.1 文件上载的HTML代码
- 19.1.2 编写处理文件的PHP
- 19.1.3 避免常见上载问题
- 19.2 使用目录函数
- 19.2.1 从目录读取
- 19.2.2 获得当前目录的信息
- 19.2.3 创建和删除目录
- 19.3 与文件系统的交互
- 19.3.1 获取文件信息
- 19.3.2 更改文件属性
- 19.3.3 创建、删除和移动文件
- 19.4 使用程序执行函数
- 19.5 与环境变量交互:getenv()和putenv()
- 19.6 进一步学习
- 19.7 下一章
第20章 使用网络函数和协议函数
- 20.1 了解可供使用的协议
- 20.2 发送和读取电子邮件
- 20.3 使用其他Web站点的数据
- 20.4 使用网络查找函数
- 20.5 备份或镜像一个文件
- 20.5.1 使用FTP备份或镜像一个文件
- 20.5.2 上传文件
- 20.5.3 避免超时
- 20.5.4 使用其他的FTP函数
- 20.6 进一步学习
- 20.7 下一章
第21章 日期和时间的管理
- 21.1 在PHP中获取日期和时间
- 21.1.1 使用date()函数
- 21.1.2 使用UNIX时间戳
- 21.1.3 使用getdate()函数
- 21.1.4 使用checkdate()函数检验日期有效性
- 21.1.5 格式化时间戳
- 21.2 在PHP日期格式和MySQL日期格式之间进行转换
- 21.3 在PHP中计算日期
- 21.4 在MySQL中计算日期
- 21.5 使用微秒
- 21.6 使用日历函数
- 21.7 进一步学习
- 21.8 下一章
第22章 创建图像
- 22.1 在PHP中设置图像支持
- 22.2 理解图像格式
- 22.2.1 JPEG
- 22.2.2 PNG
- 22.2.3 WBMP
- 22.2.4 GIF
- 22.3 创建图像
- 22.3.1 创建一个背景图像
- 22.3.2 在图像上绘图或打印文本
- 22.3.3 输出最终图形
- 22.3.4 清理
- 22.4 在其他页面中使用自动生成的图像
- 22.5 使用文本和字体创建图像
- 22.5.1 创建基本画布
- 22.5.2 将文本调整到适合按钮
- 22.5.3 放置文本
- 22.5.4 将文本写到按钮上
- 22.5.5 完成
- 22.6 绘制图像与用图表描绘数据
- 22.7 使用其他的图像函数
- 22.8 进一步学习
- 22.9 下一章
第23章 在PHP中使用会话控制
- 23.1 什么是会话控制
- 23.2 理解基本的会话功能
- 23.2.1 什么是cookie
- 23.2.2 通过PHP设置cookie
- 23.2.3 在会话中使用cookie
- 23.2.4 存储会话 ID
- 23.3 实现简单的会话
- 23.3.1 开始一个会话
- 23.3.2 注册一个会话变量
- 23.3.3 使用会话变量
- 23.3.4 注销变量与销毁会话
- 23.4 创建一个简单的会话例子
- 23.5 配置会话控制
- 23.6 通过会话控制实现身份验证
- 23.7 进一步学习
- 23.8 下一章
第24章 其他有用的特性
- 24.1 使用eval()函数对字符串求值
- 24.2 终止执行:die和exit
- 24.3 序列化变量和对象
- 24.4 获取PHP环境信息
- 24.4.1 找到所加载的PHP扩展部件
- 24.4.2 识别脚本所有者
- 24.4.3 确定脚本最近修改时间
- 24.5 暂时改变运行时环境
- 24.6 源代码加亮
- 24.7 在命令行中使用PHP
- 24.8 下一章
第五篇 创建实用的PHP和MySQL项目
第25章 在大型项目中使用PHP和MySQL
- 25.1 在Web开发中应用软件工程
- 25.2 规划和运行Web应用程序项目
- 25.3 重用代码
- 25.4 编写可维护代码
- 25.4.1 编码标准
- 25.4.2 分解代码
- 25.4.3 使用标准的目录结构
- 25.4.4 文档化和共享内部函数
- 25.5 实现版本控制
- 25.6 选择一个开发环境
- 25.7 项目的文档化
- 25.8 建立原型
- 25.9 将逻辑和内容分离
- 25.10 优化代码
- 25.10.1 使用简单优化
- 25.10.2 使用Zend产品
- 25.11 测试
- 25.12 进一步学习
- 25.13 下一章
第26章 调试
- 26.1 编程错误
- 26.1.1 语法错误
- 26.1.2 运行时错误
- 26.1.3 逻辑错误
- 26.2 使用变量帮助调试
- 26.3 错误报告级别
- 26.4 改变错误报告设置
- 26.5 触发自定义错误
- 26.6 巧妙地处理错误
- 26.7 下一章
第27章 建立用户身份验证机制和个性化设置
- 27.1 解决方案的组成
- 27.1.1 用户识别和个性化设置
- 27.1.2 保存书签
- 27.1.3 推荐书签
- 27.2 解决方案概述
- 27.3 实现数据库
- 27.4 实现基本的网站
- 27.5 实现用户身份验证
- 27.5.1 注册
- 27.5.2 登录
- 27.5.3 登出
- 27.5.4 修改密码
- 27.5.5 重设遗忘的密码
- 27.6 实现书签的存储和检索
- 27.6.1 添加书签
- 27.6.2 显示书签
- 27.6.3 删除书签
- 27.7 实现书签推荐
- 27.8 考虑可能的扩展
- 27.9 下一章
第28章 创建一个购物车
- 28.1 解决方案的组成
- 28.1.1 创建一个在线目录
- 28.1.2 在用户购买商品的时候记录购买行为
- 28.1.3 实现一个付款系统
- 28.1.4 创建一个管理界面
- 28.2 解决方案概述
- 28.3 实现数据库
- 28.4 实现在线目录
- 28.4.1 列出目录
- 28.4.2 列出一个目录中的所有图书
- 28.4.3 显示图书详细信息
- 28.5 实现购物车
- 28.5.1 使用show_cart.php脚本
- 28.5.2 浏览购物车
- 28.5.3 将物品添加到购物库
- 28.5.4 保存更新后的购物车
- 28.5.5 打印标题栏摘要
- 28.5.6 结账
- 28.6 实现付款
- 28.7 实现一个管理界面
- 28.8 扩展该项目
- 28.9 使用一个已有系统
- 28.10 下一章
第29章 创建一个基于Web的电子邮件服务系统
- 29.1 解决方案的组成
- 29.1.1 电子邮件协议:POP3和IMAP
- 29.1.2 PHP对POP3和IMAP的支持
- 29.2 解决方案概述
- 29.3 建立数据库
- 29.4 了解脚本架构
- 29.5 登录与登出
- 29.6 建立账户
- 29.6.1 创建一个新账户
- 29.6.2 修改已有账户
- 29.6.3 删除账户
- 29.7 阅读邮件
- 29.7.1 选择账户
- 29.7.2 查看邮箱内容
- 29.7.3 阅读邮件消息
- 29.7.4 查看消息标题
- 29.7.5 删除邮件
- 29.8 发送邮件
- 29.8.1 发送一则新消息
- 29.8.2 回复或转发邮件
- 29.9 扩展这个项目
- 29.10 下一章
第30章 创建一个邮件列表管理器
- 30.1 解决方案的组成
- 30.1.1 建立列表和订阅者数据库
- 30.1.2 上载新闻信件
- 30.1.3 发送带附件的邮件
- 30.2 解决方案概述
- 30.3 建立数据库
- 30.4 定义脚本架构
- 30.5 实现登录
- 30.5.1 新账户的创建
- 30.5.2 登录
- 30.6 用户函数的实现
- 30.6.1 查看列表
- 30.6.2 查看邮件列表信息
- 30.6.3 查看邮件列表存档
- 30.6.4 订阅与取消订阅
- 30.6.5 更改账户设置
- 30.6.6 更改密码
- 30.6.7 登出
- 30.7 管理功能的实现
- 30.7.1 创建新的邮件列表
- 30.7.2 上载新的新闻信件
- 30.7.3 多文件上载的处理
- 30.7.4 预览新闻信件
- 30.7.5 发送邮件
- 30.8 扩展这个项目
- 30.9 下一章
第31章 创建一个Web论坛
- 31.1 理解流程
- 31.2 解决方案的组成
- 31.3 解决方案概述
- 31.4 数据库的设计
- 31.5 查看文章的树型结构
- 31.5.1 展开和折叠
- 31.5.2 显示文章
- 31.5.3 使用treenode类
- 31.6 查看单个的文章
- 31.7 添加新文章
- 31.8 添加扩充
- 31.9 使用一个已有的系统
- 31.10 下一章
第32章 生成PDF格式的个性化文档
- 32.1 项目概述
- 32.1.1 评估文档格式
- 32.2 解决方案的组成
- 32.2.1 问题与回答系统
- 32.2.2 文档生成软件
- 32.3 解决方案概述
- 32.3.1 提问
- 32.3.2 给答题评分
- 32.3.3 生成RTF证书
- 32.3.4 从模板生成PDF证书
- 32.3.5 使用PDFlib生成PDF文档
- 32.3.6 使用PDFlib的一个“Hello World”程序
- 32.3.7 用PDFlib生成证书
- 32.4 处理标题的问题
- 32.5 扩展该项目
- 32.6 下一章
第33章 使用XML和SOAP来连接Web服务
- 33.1 项目概述:使用XML和Web服务
- 33.1.1 理解XML
- 33.1.2 理解Web服务
- 33.2 解决方案的组成
- 33.2.1 使用Amazon的Web服务接口
- 33.2.2 XML的解析:REST响应
- 33.2.3 在PHP中使用SOAP
- 33.2.4 缓存
- 33.3 解决方案概述
- 33.3.1 核心应用程序
- 33.3.2 显示特定种类的图书
- 33.3.3 获得一个AmazonResultSet类
- 33.3.4 使用REST发送和接收请求
- 33.3.5 使用SOAP发送和接收请求
- 33.3.6 缓存请求返回的数据
- 33.3.7 创建购物车
- 33.3.8 到Amazon付账
- 33.4 安装项目代码
- 33.5 扩展这个项目
- 33.6 进一步学习
第34 章使用Ajax构建Web 2.0应用
- 34.1 Ajax 是什么?
- 34.1.1 HTTP请求和响应
- 34.1. 2 DHTML和XHTML
- 34.1.3 级联样式单(CSS)
- 34.1.4 客户端编程
- 34.1.5 服务器端编程
- 34.1.6 XML和XSLT
- 34.2 Ajax基础
- 34.2.1 XMLHTTPRequest对象
- 34.2.2 与服务器通信
- 34.2.3 处理服务器响应
- 34.2.4 整合应用
- 34.3 在以前的项目添加Ajax元素
- 34.3.1在PHPBookmark应用中添加Ajax元素
- 34.4 进一步学习
- 34.4.1 进一步了解文档对象模型(DOM)
- 34.4.2 Ajax应用可用的JavaScript函数库
- 34.4.3 Ajax开发人员网站
第六篇 附录
附录A 安装PHP及MySQL
附录B Web资源