如何验证网站中的会话

Posted

技术标签:

【中文标题】如何验证网站中的会话【英文标题】:How to authenticate a session in a website 【发布时间】:2013-01-01 16:51:55 【问题描述】:

当用户登录网站时,哪种方法最适合验证会话?例如,在 $_SESSION 中设置一个已检查的变量,如果设置为用户登录,是否有效?我正在阅读this tutorial,他们有if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Username'])),如果返回true,则向用户显示页面内容。是这样的吗?

【问题讨论】:

我认为***的更好问题 How to create sessions using php? 的可能重复项,另请参阅 ***.com/questions/1535697/… 【参考方案1】:

是的,这是一般的想法。

在其他地方(在登录页面上)将$_SESSION['LoggedIn'] 设置为TRUE 后,您将检查$_SESSION['LoggedIn'] 是否为TRUE,如果是,则显示内容

【讨论】:

有'LoggedIn'这个值可以吗,不应该是密码的哈希值之类的吗?或者这不是必要的,因为会话驻留在服务器上,因此它们很难被篡改? 您在登录时验证用户。然后将会话设置为 TRUE。会话(理论上)很难篡改。【参考方案2】:

我同意@relentless。但是,如果您将信息存储在数据库中,我更喜欢。

假设您有一个名为 user 的表,其中包含一个 tinyint 列 logged_in。每当用户成功登录时,将列值更新为 1。注销后将其更改为 0。

【讨论】:

登录是会话的属性,而不是用户的属性。 哦,我的错。我以某种方式将它与用户联系起来。【参考方案3】:

是的,我建议您在http://php.net/manual/en/reserved.variables.php 中了解一下 PHP 和一些预定义变量,例如 $_POST 和 $_SESSION。还有诸如 isset() 和 empty() 之类的函数,也许还有一些 html 表单。

【讨论】:

以上是关于如何验证网站中的会话的主要内容,如果未能解决你的问题,请参考以下文章

如何通过邮递员中的cookie传递会话ID并登录?

如果我知道 Apache Shiro 中的会话 ID 而不使用任何哈希映射,如何验证会话 ID?

基于令牌的身份验证中的会话

我如何以列表视图显示网站中的多个会话?

如何在 PHP 中生成 QuickBlox 身份验证签名?

如何防止 Laravel 中的会话/cookie 刷新?