繁体   English   中英

PHP中的登录/注销问题

[英]login/logout problem in PHP

我有个问题。 我有一个网站,我在其中提供安全性,例如登录ID和密码(照常)。 我不想要的是,1)我不想允许单个用户同时登录不同的计算机。 2)为此,我正在数据库中使用一列来保持用户的当前状态(即登录/注销)。 我仅允许会话未关闭且状态为登录的用户登录。 3)所以我的问题是当我手动注销时。 它正在关闭会话并以状态“注销”更新数据库。 4)但是当我从右上角的十字按钮关闭窗口时。 它正在关闭会话,但表数据仍然是“登录”。 因此,以后我将无法登录同一用户。 5)那么我该如何解决这个问题。 请帮我!

用另一种方式做。
不要禁止访问。 只需手动注销上一个即可。
像ICQ或其他足够聪明的Messenger一样。

为此,请将会话ID保留在用户表中。 更改后-提示登录。

1)我不想允许单个用户同时登录不同的计算机。

每次用户尝试登录时,请检查是否已设置会话。 您可以通过将unix时间戳的哈希值保存到与用户关联的数据库中,以及在用户每次登录时将哈希值设置为会话来实现。 用户再次登录后,您将创建一个新的哈希,它将覆盖数据库中的旧哈希。

然后,在所有受保护的文件中,您可以将会话哈希变量与数据库中的会话哈希变量进行比较。 如果不匹配,请注销用户,但是新的登录实例仍将保持活动状态。

2 + 3 + 4)为此,我正在数据库中使用一列来保持用户的当前状态(即登录/注销)。 我仅允许会话未关闭且状态为登录的用户登录。 所以我的问题是当我手动注销时。 它正在关闭会话以及更新状态为“注销”的数据库。但是当我从右上角的“十字”按钮关闭窗口时。 它正在关闭会话,但表数据仍然是“登录”。 因此,以后我将无法登录同一用户。

为此,您必须保存最后一个活动的unix时间戳。 在注销用户之前,您还必须花点时间-通常是一小时或3600秒。 使用cron作业或某些页面上的包含文件,您可以检查用户的时间并通过if(time - last_active_time > 3600){your_logout_func();}

5)那么我该如何解决这个问题。 请帮我!

上面这样做可以解决您的问题,但是当然有很多方法可以解决它:)

您可以尝试这样的事情:

<html>
<head>
<script type="text/javascript">
function logout(){
window.open("http://www.yoursite.com/logout.php","_blank");
}
</script>
</head>

<body onunload="logout()">
</body>

</body>

</html> 

您还可以运行一个cron作业,该作业将定期检查用户的状态。 例如,如果用户最后一次“做某事”距离太远,那么您可以让脚本将用户注销。

这也将涉及跟踪用户的状态……也许是一个检查页面浏览量的简单表格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM