你好,这是我第一次这样做。我已经阅读了网站身份验证的明确指南和http://en.wikibooks.org/wiki/PHP_Programming/User_login_systems,但我仍然对自己是否正确地完成此操作存在疑虑。注意:我这样做是为了学习,请不要建议使用框架、php pear auth或任何其他相关类。我只想得到一些指导,以改进这个。
我不需要CIA级别的安全性,只需要一个基本的登录网站:
无论如何,这就是我的登录方式:
等待用户按下登录按钮
if (isset($_POST['action']) && $_POST['action'] == 'Login')
表单令牌是否与会话中存储的令牌匹配?如果不匹配,则退出。
- 使用php过滤器验证用户名和密码中的字符串
- 哈希密码(sha256)(带盐,我对每个密码使用相同的盐)
- 使用mysqli检查用户名和哈希密码(在SQL中限制为1)。
- 如果没有找到匹配项,则显示错误--否则设置会话(使用sha256哈希)
在所有这些操作的底部,我放置了以下内容,这是我最担心的一行:
我的想法是,如果会话未设置,则显示登录表单并退出。 if
(!isset($_SESSION['authenticated'])) {
require_once 'html/login_form.html';
exit(); }
// secret stuff goes here
这里可以找到完整的代码,但它仍然是不完整的。
我还尝试实现这个:如何在PHP中限制用户登录尝试次数。
欢迎任何反馈意见。