Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的登录/注销问题_Php_Mysql - Fatal编程技术网

PHP中的登录/注销问题

PHP中的登录/注销问题,php,mysql,Php,Mysql,我有个问题。 我有一个网站,我在其中提供安全性,如登录id和密码,像往常一样。不,我想要的是, 1我不想让一个用户同时登录不同的机器。 2为此,我在数据库中使用了一个列,它保持useri.e的当前状态。登录/注销。我只允许用户在has会话未关闭且状态为login时登录。 3所以我的问题是当我手动注销时。它正在关闭会话,并使用状态注销更新数据库。 但当我从右上角的十字按钮关上窗户时。它正在关闭会话,但表数据仍处于登录状态。所以以后我不能登录到同一个用户。 那么我该如何解决这个问题呢。 请帮帮我 换

我有个问题。 我有一个网站,我在其中提供安全性,如登录id和密码,像往常一样。不,我想要的是, 1我不想让一个用户同时登录不同的机器。 2为此,我在数据库中使用了一个列,它保持useri.e的当前状态。登录/注销。我只允许用户在has会话未关闭且状态为login时登录。 3所以我的问题是当我手动注销时。它正在关闭会话,并使用状态注销更新数据库。 但当我从右上角的十字按钮关上窗户时。它正在关闭会话,但表数据仍处于登录状态。所以以后我不能登录到同一个用户。 那么我该如何解决这个问题呢。 请帮帮我

换一种方式。 不要禁止进入。只需手动注销上一个。 像ICQ或其他足够聪明的信使一样


为此,请将会话id保留在用户表中。一旦它被更改-提示登录

您可以尝试以下方法:

<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作业,定期检查用户的状态。例如,如果用户上次做某事的时间太远,那么您可以让脚本将用户注销

这还需要跟踪用户的状态……可能是一个检查页面视图的简单表

1我不想允许单个用户 在同一时间登录到不同的计算机 同时

每次用户尝试登录时,检查会话是否已设置。您可以通过将unix时间戳的哈希保存到与用户关联的数据库中,并在每次用户登录时将哈希设置为会话来完成此操作。一旦用户再次登录,您将创建一个新的哈希,该哈希将覆盖数据库中的旧哈希

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

2+3+4为此,我使用了 数据库中正在保留的列 用户的当前状态。 登录/注销。我允许用户 仅在没有会话时登录 已关闭,状态为登录。所以我的 问题是当我注销时 手动。会议即将结束 以及使用 状态注销。但当我关闭时 从上到下的窗口 右拐角。它正在关闭游戏机 但是表数据仍然是登录的。所以 以后我就不能登录了 同一个用户

为此,必须保存最后一个活动的unix时间戳。您还必须在注销用户之前计算出时间量-通常为一小时或3600秒。在某些页面上使用cron作业或include文件,您可以检查用户的时间,并在iftime-last\u active\u time>3600{your\u logout\u func;}时比较用户的时间

那么我该如何解决这个问题呢。请帮帮我


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

如果用户关闭javascript怎么办?每次用户离开页面时,该函数都会被调用,当用户通过LinksHanks tazphoneix转到其他页面征求您的建议时,问题就会出现。。。但翁德雷什·斯林塔克和尼克提出的观点是相当可观的。这两个问题确实是个大问题,所以我无法确定用户的确切状态。Thanx要求Ondrrj Slintak和nik将这种情况摆在观众面前。很多。请给出一些更全面的解决方案。观众可以看到这个问题。建议。。。。此解决方案仅适用于一台机器。其中用户使用一台机器登录和注销。但是,假设这个操作将在不同的机器上执行,那么就会出现问题。问题是,如果未经授权的用户试图使用正确的uid和密码登录。如果他/她当时已登录,则会注销到真实用户。这是我不想做的。我想不间断地进行第一次用户登录。@user356170别傻了。不管涉及多少台机器。看在上帝的份上,未经授权的用户将在哪里获得uid并通过?你想做的是:想象一下有效的用户注销。具有uid并通过登录的攻击者。那么有效用户就不能再登录了。问题不在于是否阻止登录。是用户丢失了密码。请描述一个导致您出现此问题的情况。这个想法很好。但问题是,当用户关闭浏览器时,我们不能对数据库进行任何更改。所以很难知道我们上次是什么时候注销的。最后我决定做一件事。当收到新的会话登录请求时,我将注销上一个会话。