这是我的问题。
我正在研究食品管理系统。
现在我知道当有人登录时,它会将他们的信息放入登录表中。
然后,使用该信息,当用户注销时,它会将它们从表中删除。
当多人登录时,我遇到了麻烦。
检查此方案。
有人登录。他们被带到他们的仪表板,并且能够根据食物表在列表中看到他们的食物,食物表有一排食物,电子邮件列指定谁拥有该特定物品。
现在,如果他们退出,则会将他们从登录表中删除。
但是,如果第一个用户仍然登录,然后第二个用户登录。这就是问题开始时的情况。
如果第二个用户在第一个用户之前首先注销,他的数据将被删除。但是,如果第一个用户在第二个用户之前注销,则第二个用户数据仍将从表中删除。如果那时第二个用户要刷新,他将会看到第一个用户信息。
它与我认为的会话有关,当用户登录时,它会转到仪表板并启动会话。我设置的方式是,当会话开始时,它会从登录表中提取最新用户的电子邮件。这就是问题所在。当2 ppl登录时,用户电子邮件变量现在引用最新用户,因此当第一个用户注销时,最新用户将被注销。
有没有办法创建独特的会话,或者在有人登录时存储用户电子邮件/用户名,因此我可以在他们注销时引用该特定用户的电子邮件。
这是启动会话和查找最新用户的代码。
<?php require_once('Connections/localhost.php');
$index = 0;
?>
<?php
//initialize the session
if (!isset($_SESSION)) {
mysql_select_db($database_localhost, $localhost);
$log = mysql_query("SELECT email FROM loggedin") or die(mysql_error());
while($cols = mysql_fetch_array($log)){
$value = $cols['email'];
$email[$index] = $value;
$index++;
}
session_start();
然后我在查询中引用了$ value变量。
因此,每次有人登录此代码时,都会将$ value设置为最新的电子邮件,或者更确切地说,是查询电子邮件末尾的电子邮件。因此,当用户1注销它然后在查询中使用$ value时,现在将$ value设置为下一个用户电子邮件。我需要它,以便它保持用户登录的电子邮件。
答案 0 :(得分:0)
通常,您会使用会话变量来记住当前登录用户ID的ID。 EG
$_SESSION['userId']=$validatedUserId;
$ validatedUserId具有id,当且仅当它通过密码检查时,否则它应为null;
然后返回帖子可以引用布尔值
(null!=$_SESSION['userId'])
您可以在此处分支代码,如果不是null,则用户已登录。 当用户注销时,请发出:
$_SESSION['userId']=null; session_destroy();
之后,用户需要再次登录才能使用$ _SESSION ['userId']。