在会话中存储什么

时间:2010-12-29 22:26:02

标签: php

如果用户成功输入密码和用户名,并且您想设置会话,会话应包含哪些数据?我对此很困惑,我读过它应该是一个随机生成的字符串,我可以存储哈希的user_id + salt吗?我希望能够验证这确实是正确的用户:

表格:

<form method="POST" action="">
<input type="hidden" name="auth_token" value="<?php echo $form_token; ?>">
Username: <input type="text" name="username">
Password: <input type="password" name="password">
<input type="submit" name="action" value="Login">
</form>

我想做以下事情:

if form token in session = form_token var in form
  if username and password are correct
    set session hash(user_id + salt)

修改:忘记添加,它很可能是在共享托管上。

4 个答案:

答案 0 :(得分:7)

您只需将用户ID存储在会话数组中即可。只有会话ID cookie被发送到浏览器,“外部世界”不知道会话本身存储的内容。存储显示用户已通过身份验证的内容也很方便。

永远不要在任何地方存储明文密码。

$_SESSION["UserAuthenticated"] = true;
$_SESSION["UserID"] = $userID;

答案 1 :(得分:1)

您的会话应包含用户的用户名或其他内部用户ID。

不需要哈希,盐等,因为会话数据存储在您的服务器上,而不是用户的机器上作为cookie存储。也没有必要以任何形式存储密码,因为您已经对它们进行了身份验证。

答案 2 :(得分:1)

有些人只会存储ID。你对盐水哈希版本的想法就足够了,但看起来有点过分。在后续页面加载时,请根据数据库验证ID。

答案 3 :(得分:1)

是否有理由避免使用简单的布尔值来表明用户已经过身份验证?如果没有,那么我建议:

<?php

if ($_POST["username"] == 'test' && $_POST["password"] == 'test') {
   $_SESSION['authenticated'] = true;
}

?>