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

《PHP和MySQL Web开发(原书第4版)》第17章 使用PHP和MySQL实现身份验证

关灯直达底部

在本章中,我们将讨论如何在用户身份验证中应用各种PHP和MySQL技术。

在本章中,我们将主要介绍以下内容:

■识别访问者

■实现访问控制

■使用基本身份验证

■在PHP中使用基本身份验证

■在Apache的.htaccess文件中使用基本身份验证

■使用mod_auth_mysql身份验证

■创建自定义身份验证

17.1 识别访问者

Web是一个匿名媒体,但是通常知道谁在访问网站是非常有意义的。如果没有访问者的帮助,很难了解他们的信息,这对于访问者的隐私来讲是有利的。但是通过一些操作,服务器就可以发现许多关于连接他们的计算机与网络的信息。Web浏览器通常都可以识别它自己,它可以告诉服务器自己是什么浏览器、浏览器版本、运行当前操作系统的用户等。通过使用JavaScript,还可以确定访问者屏幕的颜色深度与分辨率,以及他们的Web浏览窗口的大小。

每一台连接到互联网的计算机有一个唯一的IP地址。根据访问者的IP地址,可以推测出他的一些信息。可以发现谁拥有该IP,有时甚至可以猜测出访问者的地理位置。一些地址比其他地址更有用。通常,拥有永久互联网连接的用户将拥有永久地址。通过电话拨号连接到ISP的用户只能使用ISP分配的一个临时IP地址。所以,当再次看到这个IP地址时,它可以正由另一台计算机使用,下次看到该访问者时,他也可能正在使用另一个IP地址。

幸运的是,对于网络用户,他们的浏览器无法泄露可以识别他们身份的信息。如果要知道访问者的名字或者其他信息,必须亲自询问他。

许多网站强制要求用户提供他们的信息。纽约时报(http://www.nytimes.com)可以免费提供报刊内容,但是只有愿意提供详细信息(例如姓名、性别和家庭总收入)的人才能免费阅读。Nerd新闻组和讨论网站Slashdot(http://www.slashdot.org)允许注册用户使用昵称参与讨论,用户还可以自定义他们希望看到的界面。大多数电子商务网站在顾客订购第一份订单时记录顾客的详细信息,这就意味着网站不要求顾客每次都输入详细信息。

如果已经从访问者那里询问和获得了信息,只需要在他下次访问的时候将这些信息与访问者联系起来。如果愿意做出这样的假设:只有一个用户通过一台机器使用特定的账号访问网站,而且每个访问者都只使用一台机器,那么可以将一个cookie存储到用户机器中,这样也可以识别该用户。

当然,这对所有用户来说是不可能的。通常,许多人可能会共享一台计算机,而且许多人还可能使用多台计算机。至少在一段时间之后,要再次询问访问者的名字。除了询问访问者的名字,可能还会要求访问者提供某种证据来证明身份。

正如我们在第15章中介绍的:要求用户证明身份的操作称为身份验证。如今,在网站上经常使用的身份验证方法是要求访问者提供一个唯一的登录名和密码。通常,身份验证可以用来允许或禁止用户对特定页面或资源进行访问,但是这是可选的,或者也可以用于其他目的,如个性化设置。