首页 » PHP和MySQL Web开发(原书第4版) » PHP和MySQL Web开发(原书第4版)全文在线阅读

《PHP和MySQL Web开发(原书第4版)》第27章 建立用户身份验证机制和个性化设置

关灯直达底部

在这个项目中,我们将讨论如何让用户在我们的站点注册。当完成注册之后,我们能跟踪他们所感兴趣的事物并向他们显示适当的内容。这个过程叫做用户个性化设置。

这个项目允许用户建立一组网页书签,并根据他们以前的操作向他们建议其他可能感兴趣的链接。更常见的是,用户个性化设置可用于所有基于Web的应用程序,以用户希望的格式显示他们感兴趣的内容。

在这个项目和接下来的其他项目中,我们将开始了解一组需求,这个需求类似于从客户那里获得的需求。我们会将这些需求开发为一组解决方案组件,并建立一个将这些组件联系到一起的设计,然后再应用每个组件。

在这个项目中,我们将实现如下功能:

■用户登录和验证用户

■管理密码

■记录用户的个人喜好

■个性化内容

■基于已有的用户信息为用户推荐他们可能感兴趣的内容

27.1 解决方案的组成

对于这个项目,我们希望为在线书签系统建立一个原型,称之为PHPbookmark,它与在Backflip网站上可以访问到的系统类似(但在功能上更有限):http://backflip.com。

我们的系统应该能够让用户登录进来,保存他们的书签,并基于他们的个人喜好推荐给他们可能喜欢的其他站点。

这些解决方案需求分为3个主要部分。

首先,需要识别每个用户。我们应该有验证他们身份的方法。

其次,需要保存单个用户的书签。用户应该能够添加和删除书签。

再次,需要根据对他们的了解,向用户建议他们可能感兴趣的站点。

现在,我们已经对项目有了基本了解,可以开始设计解决方案及其组件了。下面,我们开始了解上述3个需求各自的解决方案。

27.1.1 用户识别和个性化设置

用户身份验证有许多可以选择的办法,这些在本书的其他部分已经讨论过。因为我们希望将用户和一些个性化信息联系起来,所以就要将用户的登录名和密码保存在一个MySQL数据库中,验证的时候用它做比较。

如果要让用户以用户名和密码登录,需要如下组件。

■用户能够注册一个用户名和密码。我们需要限制用户名和密码的长度和格式。为安全起见,应该将密码加密之后再保存。

■在注册过程中,用户应该能够看到他们提供的详细信息。

■用户完成网站访问之后能够登出。从隐私角度考虑看,如果用户是使用自己家中的PC,这并不是很重要,但是在共用的PC上这就相当重要了。

■网站能够检测用户是否登录,并为登录的用户访问数据。

■为了安全起见,用户可以修改密码。

■用户应该能够在不需要开发者帮助的前提下重置他们的密码。一个常用的方法是将密码发送到用户注册时提供的邮箱。这意味着要在注册的时候保存他们的邮箱地址。因为密码是以加密的形式进行保存的,而且其他人不能够解码。因此实际上只能为用户设置一个新密码,并将它发给用户。

我们要为所有这些功能编写函数。这些函数大多数是可重用的,或者可以从其他项目中拿过来,只要经过较小的修改就可以重用。