如何注销特定的用户会话(php和mysql)

时间:2014-04-01 20:14:22

标签: php mysql sql session logging

这是我的问题。

我正在研究食品管理系统。

现在我知道当有人登录时,它会将他们的信息放入登录表中。

然后,使用该信息,当用户注销时,它会将它们从表中删除。

当多人登录时,我遇到了麻烦。

检查此方案。

有人登录。他们被带到他们的仪表板,并且能够根据食物表在列表中看到他们的食物,食物表有一排食物,电子邮件列指定谁拥有该特定物品。

现在,如果他们退出,则会将他们从登录表中删除。

但是,如果第一个用户仍然登录,然后第二个用户登录。这就是问题开始时的情况。

如果第二个用户在第一个用户之前首先注销,他的数据将被删除。但是,如果第一个用户在第二个用户之前注销,则第二个用户数据仍将从表中删除。如果那时第二个用户要刷新,他将会看到第一个用户信息。

它与我认为的会话有关,当用户登录时,它会转到仪表板并启动会话。我设置的方式是,当会话开始时,它会从登录表中提取最新用户的电子邮件。这就是问题所在。当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设置为下一个用户电子邮件。我需要它,以便它保持用户登录的电子邮件。

1 个答案:

答案 0 :(得分:0)

通常,您会使用会话变量来记住当前登录用户ID的ID。 EG

$_SESSION['userId']=$validatedUserId;

$ validatedUserId具有id,当且仅当它通过密码检查时,否则它应为null;

然后返回帖子可以引用布尔值

(null!=$_SESSION['userId'])

您可以在此处分支代码,如果不是null,则用户已登录。 当用户注销时,请发出:

$_SESSION['userId']=null; session_destroy(); 

之后,用户需要再次登录才能使用$ _SESSION ['userId']。