在这个项目中,我们将讨论如何让用户在我们的站点注册。当完成注册之后,我们能跟踪他们所感兴趣的事物并向他们显示适当的内容。这个过程叫做用户个性化设置。
这个项目允许用户建立一组网页书签,并根据他们以前的操作向他们建议其他可能感兴趣的链接。更常见的是,用户个性化设置可用于所有基于Web的应用程序,以用户希望的格式显示他们感兴趣的内容。
在这个项目和接下来的其他项目中,我们将开始了解一组需求,这个需求类似于从客户那里获得的需求。我们会将这些需求开发为一组解决方案组件,并建立一个将这些组件联系到一起的设计,然后再应用每个组件。
在这个项目中,我们将实现如下功能:
■用户登录和验证用户
■管理密码
■记录用户的个人喜好
■个性化内容
■基于已有的用户信息为用户推荐他们可能感兴趣的内容
27.1 解决方案的组成
对于这个项目,我们希望为在线书签系统建立一个原型,称之为PHPbookmark,它与在Backflip网站上可以访问到的系统类似(但在功能上更有限):http://backflip.com。
我们的系统应该能够让用户登录进来,保存他们的书签,并基于他们的个人喜好推荐给他们可能喜欢的其他站点。
这些解决方案需求分为3个主要部分。
首先,需要识别每个用户。我们应该有验证他们身份的方法。
其次,需要保存单个用户的书签。用户应该能够添加和删除书签。
再次,需要根据对他们的了解,向用户建议他们可能感兴趣的站点。
现在,我们已经对项目有了基本了解,可以开始设计解决方案及其组件了。下面,我们开始了解上述3个需求各自的解决方案。
27.1.1 用户识别和个性化设置
用户身份验证有许多可以选择的办法,这些在本书的其他部分已经讨论过。因为我们希望将用户和一些个性化信息联系起来,所以就要将用户的登录名和密码保存在一个MySQL数据库中,验证的时候用它做比较。
如果要让用户以用户名和密码登录,需要如下组件。
■用户能够注册一个用户名和密码。我们需要限制用户名和密码的长度和格式。为安全起见,应该将密码加密之后再保存。
■在注册过程中,用户应该能够看到他们提供的详细信息。
■用户完成网站访问之后能够登出。从隐私角度考虑看,如果用户是使用自己家中的PC,这并不是很重要,但是在共用的PC上这就相当重要了。
■网站能够检测用户是否登录,并为登录的用户访问数据。
■为了安全起见,用户可以修改密码。
■用户应该能够在不需要开发者帮助的前提下重置他们的密码。一个常用的方法是将密码发送到用户注册时提供的邮箱。这意味着要在注册的时候保存他们的邮箱地址。因为密码是以加密的形式进行保存的,而且其他人不能够解码。因此实际上只能为用户设置一个新密码,并将它发给用户。
我们要为所有这些功能编写函数。这些函数大多数是可重用的,或者可以从其他项目中拿过来,只要经过较小的修改就可以重用。