PHP Web 2.0开发实战
分類: 图书,计算机/网络,程序设计,PHP,
作者: (澳)泽瓦斯著,苏金国等译
出 版 社: 人民邮电出版社
出版时间: 2008-10-1字数: 726000版次: 1页数: 475印刷时间: 2008/10/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787115187314包装: 平装编辑推荐
Amazon五星图书,从零开始开发完整的典型Web 2.0应用,迅速提升你的Web开发功力。
“读完本书后,我发现自己对Web开发和MVC模式的理解都已经今非昔比……强烈推荐此书!”
——Amazon.com
“……一部极富启发性的PHP实战指导书,业界专家充分演示了如何使用Zend Framework、Smarty、Ajax等强大技术创建一流的网站。”
——Slashdot.org
PHP已经成为主流Web开发语言。支撑着全球翘楚Facebook、Wikipedia在内的众多网站。然而,要在Web2.0时代取得竞争优势,PHP程序员面临着更大挑战,仅仅掌握语言本身,远远不够实战所需。
本书由资深PHP专家撰写,不在基础知识上花费太多笔墨,而是引导读者从设计、规划开始。综合运用PHP、MySQL、CSS、HTML、JavaScript/Ajax等技术,实现各种必需的Web 2.0特性,最终完成一个完整的典型Web 2.0应用——功能丰富的多用户博客系统。书中提供了大量具有示范意义的代码,读者将直观地学到如何实际开发出用户登录、博客、搜索功能、动态图库、Google Maps集成、标签、Web提要等功能,如何在实战中应用Zend Framework、Smarty模板引擎、Prototype等JavaScript/Ajax框架以及微格式等技术。
内容简介
本书通过一个完整的Web 2.0应用——带有动态图库、搜索和地图功能的博客系统详细介绍了Web开发的全过程。首先讨论了Web应用的规划与设计,然后逐章实现各个具体特性,包括网站主页、用户主页、用户注册页面、账户登录和管理页面、用户博客系统、网站搜索以及应用管理等,最后介绍部署和维护。
本书适合中、高级的PHP程序员阅读。
作者简介
Quentin Zervaas,资深PHP程序员。曾为世界各地众多客户开发了许多Web应用,其中Recite CMS已经用于澳大利亚许多大公司。他还是知名PHP开发资源网站PhpRiot(WWW.phpriot.com)的维护者。
目录
第1章应用规划与设计
1.1什么是Web 2.0
1.2数据库连接
1.3网站模板
1.4网站特性
1.4.1网站主页和用户主页
1.4.2用户注册
1.4.3账户登录和管理
1.4.4用户博客
1.4.5网站搜索
1.4.6应用管理
1.5开发的其他方面
1.5.1搜索引擎优化
1.5.2PHPDoc风格的注释
1.5.3安全性
1.5.4应用日志
1.5.5可维护性和可扩展性
1.6版本控制和单元测试
1.7小结
第2章建立应用框架
2.1Web服务器配置
2.1.1操作系统
2.1.2安装Apache HTTP服务器
2.1.3安装MySQL 5
2.1.4安装PHP 5.2.3
2.2应用文件系统结构
2.2.1Web根目录
2.2.2数据存储目录
2.2.3PHP类目录
2.2.4模板目录
2.2.5完整的目录结构
2.3安装Zend框架
2.4配置Web服务器
2.4.1在Linux上创建虚拟主机
2.4.2在Windows上创建虚拟主机
2.4.3重启Web服务器
2.5建立数据库
2.6使用MVC模式
2.6.1将应用逻辑与表示逻辑分离
2.6.2将所有请求定向到index.php
2.6.3Zend_Controller类简介
2.6.4Zend_Controller如何处理请求
2.6.5创建IndexController
2.7定义应用设置
2.8连接数据库
2.9Smarty模板引擎
2.9.1为什么不使用其他模板引擎
2.9.2下载和安装Smarty
2.9.3利用Zend_Controller自动显示视图
2.9.4Smarty与网站控制器集成
2.10增加日志功能
2.11小结
第3章用户认证、授权和管理
3.1创建用户数据库表
3.1.1时间戳
3.1.2用户个性化信息
3.2Zend_Auth简介
3.2.1实例化Zend_Auth
3.2.2使用Zend_Auth完成认证
3.3Zend_Acl简介
3.4结合Zend_Auth、Zend_Acl和Zend_Controller_Front
3.5用DatabaseObject管理用户记录
3.5.1DatabaseObject_User类
3.5.2使用DatabaseObject_User
3.6管理用户个性化信息
3.6.1使用Profile_User
3.6.2集成Profile_User和DatabaseObject_User
3.7小结
第4章用户注册、登录和注销
4.1为应用增加用户注册功能
4.1.1为用户注册创建表单处理器
4.1.2显示注册表单并处理注册
4.1.3为用户注册表单增加CAPTCHA
4.1.4增加E-mail功能
4.2实现账户登录和注销
4.2.1创建登录模板
4.2.2增加account控制器login动作
4.2.3记录成功和失败登录
4.2.4用户注销账户
4.3处理忘记口令的情况
4.3.1重置用户口令
4.3.2重置口令的函数
4.4实现账户管理
4.4.1创建账户主页
4.4.2更新网站导航
4.4.3允许用户更新信息
4.5小结
第5章Prototype与Scriptaculous简介
5.1下载和安装Prototype
5.2选择文档对象模型中的对象
5.2.1$()函数
5.2.2getElementsByClassName()函数
5.2.3$$()函数
5.2.4getElementsBySelector()函数
5.3Prototype的Hash对象
5.4其他元素扩展
5.4.1显示和隐藏元素
5.4.2获取元素尺寸
5.4.3管理元素类
5.4.4用Prototype管理字符串
5.5Prototype中的Ajax操作
5.5.1Ajax请求选项
5.5.2Ajax回调函数
5.5.3JSON
5.5.4一个Ajax.Request例子
5.6Prototype中的事件处理
5.6.1观察事件
5.6.2查找事件出现在哪个元素上
5.6.3取消事件
5.7利用Prototype创建JavaScript类
5.7.1创建类
5.7.2为函数调用绑定对象
5.8从Prototype转向Scriptaculous
5.8.1预置控件
5.8.2拖放
5.8.3视觉效果
5.8.4DOM元素构建器
5.8.5JavaScript单元测试
5.9下载和安装Scriptaculous
5.10在一个实用例子中结合使用Prototype、Scriptaculous、Ajax和PHP
5.10.1创建主HTML页面:index.php
5.10.2为应用设置样式:styles.css
5.10.3创建和填充数据库:schema.sql
5.10.4服务器端管理列表项:items.php
5.10.5在服务器端处理Ajax请求:processor.php
5.10.6创建客户端应用逻辑:scripts.js
5.11小结
第6章为Web应用设置样式
6.1增加页面标题和浏览路径
6.1.1Breadcrumbs类
6.1.2生成URL
6.1.3为各个控制器动作设置标题和浏览路径
6.1.4创建一个Smarty插件输出浏览路径
6.1.5显示页面标题
6.2在应用中集成设计
6.2.1创建静态HTML
6.2.2将HTML标记移入Smarty模板
6.3构建CSS
6.3.1指定媒体类型和加载CSS文件
6.3.2创建应用CSS
6.3.3创建只打印样式表
6.3.4完整的应用样式表
6.4为应用Web表单设置样式
6.5加载Prototype和Scriptaculous
6.6实现客户端表单验证
6.6.1为CustomControllerAction类增加JSON支持
6.6.2修改表单处理器
6.6.3修改注册控制器动作
6.6.4创建JavaScript表单验证器
6.6.5加载UserRegistrationForm类
6.7小结
第7章构建博客系统
7.1创建数据库表
7.2建立DatabaseObject和Profile类
7.2.1创建DatabaseObject_BlogPost类
7.2.2创建Profile_BlogPost类
7.3创建控制器管理博客帖子
7.3.1扩展应用权限
7.3.2BlogmanagerController动作
7.3.3链接博客管理系统
7.4创建和编辑博客帖子
7.4.1创建博客帖子提交表单模板
7.4.2在editAction()中实例化FormProcessor_BlogPost
7.4.3实现FormProcessor_BlogPost类
7.4.4为博客帖子生成一个永久链接
7.4.5过滤提交的HTML
7.4.6创建一个新博客帖子
7.5预览博客帖子
7.5.1创建预览动作
7.5.2实现预览模板
7.5.3请求对用户动作的确认
7.6更新博客帖子的状态
7.6.1完成setstatusAction()
7.6.2通知用户
7.7小结
第8章扩展博客管理系统
8.1在博客管理系统索引页面上列出帖子
8.1.1从数据库获取博客帖子
8.1.2将最新帖子和各月概要赋给模板
8.1.3在模板中显示最新帖子
8.1.4显示各月概要
8.2为博客各月概要增加Ajax功能
8.2.1创建Ajax请求输出
8.2.2BlogMonthlySummary JavaScript类
8.2.3安装BlogMonthlySummary类
8.2.4通知用户内容已更新
8.3集成WYSIWYG编辑器
8.3.1下载并安装FCKeditor
8.3.2配置FCKeditor
8.3.3在博客编辑页面中加载FCKeditor
8.4小结
第9章个人化用户区
9.1控制用户设置
9.1.1为用户提供定制设置
9.1.2处理对用户设置的修改
9.1.3创建默认用户设置
9.2UserController类
9.2.1将请求路由到UserController
9.2.2处理对UserController的请求
9.3显示用户的博客
9.3.1显示博客索引页面
9.3.2显示单个博客帖子
9.3.3生成博客归档链接
9.3.4显示各月归档
9.4填充应用主页
9.4.1加载最新公开帖子
9.4.2实现应用主页
9.5小结
第10章实现Web 2.0特性
10.1标签
10.1.1实现标签系统
10.1.2管理博客帖子标签
10.1.3在用户博客上显示用户的标签
10.1.4显示标签空间
10.1.5在各帖子上显示标签
10.2Web提要
10.2.1Web提要的数据格式
10.2.2用Zend_Feed创建一个Atom提要
10.2.3为UserController增加提要
10.2.4链接到提要
10.2.5其他提要选项
10.3微格式
10.3.1使用微格式的例子
10.3.2为什么使用微格式
10.3.3对标签标记微格式
10.4允许用户创建公开个性化数据
10.4.1允许用户创建公开个性化数据
10.4.2显示用户的个性化数据
10.5小结
第11章一个动态图库
11.1存储上传文件
11.1.1为图像数据创建数据库表
11.1.2用DatabaseObject控制上传图像
11.2上传文件
11.2.1设置表单编码
11.2.2增加表单
11.2.3指定文件输入类型
11.2.4设置最大文件大小
11.2.5处理上传文件
11.3发送图像
11.4调整图像大小
11.4.1创建缩略图
11.4.2将缩略图生成工具链接到图像动作处理程序
11.5管理博客帖子图像
11.5.1自动加载博客帖子图像
11.5.2在帖子预览页面上显示图像
11.5.3删除博客帖子图像
11.5.4使用Scriptaculous和Ajax删除图像
11.5.5删除帖子时删除图像
11.5.6重排博客帖子图像的顺序
11.6在用户博客上显示图像
11.6.1扩展GetPosts()函数
11.6.2在博客索引页面上显示缩略图
11.6.3在博客详细信息页面上显示图像
11.6.4用Lightbox显示更大的图像
11.7小结
第12章实现网站搜索
12.1Zend_Search_Lucene简介
12.1.1与MySQL全文索引比较
12.1.2Zend_Search_Lucene字段类型
12.1.3字段命名
12.2建立应用内容的索引
12.2.1对多种类型的数据建立索引
12.2.2创建新Zend_Search_Lucene_Document
12.2.3获取索引位置
12.2.4构建完整索引
12.2.5对一个博客帖子建立索引和解除索引
12.2.6触发搜索索引更新
12.3创建搜索工具
12.3.1增加搜索表单
12.3.2处理搜索请求
12.3.3查询搜索索引
12.3.4显示搜索结果
12.3.5搜索类型
12.4为搜索工具增加自动完成功能
12.4.1提供搜索建议
12.4.2创建一个动作处理程序返回搜索结果
12.4.3获取搜索建议
12.4.4加载SearchSuggestor类
12.4.5显示搜索建议
12.4.6为结果增加鼠标导航
12.4.7为结果增加键盘导航
12.5小结
第13章集成Google Maps
13.1Google Maps特性
13.1.1地理编码
13.1.2显示地图
13.1.3控制地图
13.2集成规划
13.2.1Google Maps的局限性
13.2.2浏览器兼容性
13.2.3文档和资源
13.2.4创建Google Maps API键
13.3增加位置存储功能
13.3.1创建数据库表
13.3.2创建DatabaseObject_BlogPostLocation类
13.3.3修改博客帖子来加载位置
13.4创建第一个地图
13.4.1创建一个新博客管理系统控制器动作
13.4.2显示第一个Google地图
13.5在地图上管理位置
13.5.1处理位置管理Ajax请求
13.5.2创建地址查找表单
13.5.3扩展BlogLocationManagerJavaScript类
13.5.4使用BlogLocationManager
13.6在用户公开博客上显示地图
13.6.1使用geo微格式输出位置
13.6.2创建BlogLocations类
13.6.3更新博客帖子显示模板
13.7小结
第14章部署与维护
14.1应用日志
14.1.1通过E-mail向管理员通知重大错误
14.1.2使用应用日志
14.2网站错误处理
14.2.1错误处理的目标
14.2.2处理分派前错误
14.2.3运行时错误
14.3网站管理
14.3.1管理区特性
14.3.2实现管理
14.4应用部署
14.4.1不同服务器有不同配置
14.4.2用rsync部署应用文件
14.5备份和恢复
14.5.1导出数据库
14.5.2导入数据库
14.6小结
书摘插图
第1章应用规划与设计
1.1 什么是Web 2.0
到底怎样才能称一个网站是“Web 2.0”网站呢?关于这个问题有很多不同的观点,以至于很难一针见血地给出确切的定义。不过,下面列出了Web 2.0网站通常需要具备的一些特性。
使用标准兼容的HTML和CSS。这个特性可以保证网站跨平台工作,并且有助于提高可访问性。这包括使用微格式生成能够跨多种平台工作的友好的HTML(有关内容将在第10章介绍)。
使用Ajax提供富用户界面。通过使用XMLHttpRequest在后台完成烦琐的操作,Web页面可以提供更丰富的功能,而且更为直观。
注解 ×HLHttpRequest是一个Javascript API,允许在用户查看网页时发出一个后HTTP请求。这说明,可以根据来自服务器的一个响应更新当前页面,而无需用户导航到网站的另一个页面。“建立一个Ajax请求” (或类似的说法)一般是指使用XMLHttpRequest在后台完成一个HTTP请求。
使用Web提要和Web服务共享数据。用户喜欢使用Web提要(如RSS或Atom)来聚集多个提要,从而当他们喜欢的网站内容有更新时就能轻松地得到更新内容。另外,web服务允许一个网站使用来自其他网站的数据(例如,这里将使用Google Maps在我们的网站上显示地图)。
结合社交网络工具。博客和论坛使得用户之间可以相互通信。
尽管这些特性或开发领域本身都并非新生事物,不过我们使用Web 2.0一词来描述综合了上述特性的新一代网站,其中充分使用了HTML和CSS,另外很可能利用Ajax和社交网络工具来改善网站界面。这些网站正是“名符其实”的Web 2.0网站。不过,这并不是说使用了其中某些特性的网站就一定是一个好网站。
……