|
|
1
1
有HTTP身份验证: http://php.net/manual/en/features.http-auth.php 或者,您也可以使用登录表单和会话跟踪来启动自己的程序: http://www.php.net/manual/en/book.session.php .
好好享受! |
|
|
2
6
好的,我将解释基本概念是如何发展的,以及一个非常简单的实现。 PHP(和大多数web应用程序)依赖于RESTful服务——就我们目前所关注的问题而言,这意味着每个请求都不会远程绑定到任何其他正在发出的请求——无论是由同一个用户还是其他用户发出的。
这意味着对于每个请求,您都需要进行检查。您需要确保用户是否具有执行该页面的权限,或者甚至不太严格地查看其内容。
实际上,在很多方面。有许多技术用于在web应用程序上实施授权,但它们基本上都可以分解为两种技术之一——集中或分散。 --集中化 这意味着您的所有操作(和控制器)都是通过单个文件处理的。说index.php。然后,该文件将根据请求参数将其任务包含或委托给其他文件(这些文件本身不能通过正常请求运行)。这是一种非常流行的方法,但对于新开发人员来说并不完全是直接的。使用此方法的应用程序示例的URL类型为:index.php?do=register、index.php?do=login、index.php?do=showtopic&topic\u id=2,依此类推。 此技术的简单实现如下所示:
等等。 我已经记录了通常的身份验证代码应该去哪里。
但是,使用这种方法,身份验证代码应该放在每个文件的开头。这类应用程序的URL通常类似于:register.php、login.php等等。这里的主要问题是,如上所述,您需要对每个文件执行所有身份验证逻辑,如果文件数量增加,这可能是一项繁忙的工作。一个方便的解决方案是将该逻辑放在一个文件中,并在任何逻辑之前包含该文件(这将终止对未授权人员的请求)。一个简单的例子是:
|
|
|
3
2
使用表单登录时,应检查数据库中的用户名和密码。密码应该被置乱(通常使用MD5散列算法),并以相同的方式存储在数据库中。您可以使用以下方法捕获变量(使用一些验证来检查POST变量是否有效):
用户名和散列密码应该存储在数据库中。然后可以使用以下方法检查数据库中的匹配:
找到用户后,您可以使用会话来存储用户值,这将允许您跨页面访问用户信息。注:
在要保护的每个页面上,您都会在这些页面的顶部添加以下内容:
|
|
|
4
1
|
|
|
5
1
我想大多数用户都希望表单输入可以登录。如果希望用户在会话过期后返回并使用相同的帐户登录,则需要一个数据库来存储用户信息。
约翰尼的密码实际上是“foobar”,但数据库存储
爱丽丝的密码是“foobaz”。她试图登录,但不小心输入了“foobar”,约翰尼的密码。这将导致:
哪个是
当然,这种策略的缺点是,当用户忘记密码时,你不能告诉他们密码是什么——你不知道!您可以通过让用户 复位 |
|
|
vale383 · 如何在Django端点中查找user_id 1 年前 |
|
|
Tunahan Keklik · 如果用户仍在网站上时会话过期怎么办 2 年前 |
|
onizukaek · 如何将无密码登录链接认证应用于无头架构? 2 年前 |
|
|
Kananda Gama · Problema com登录[关闭] 2 年前 |