如何识别登录用户?

时间:2011-08-08 04:06:46

标签: php

我刚刚为我的网站制作了注册表单,但是我对如何记住用户通过会话登录没有任何了解。我想我可以在验证时将其IP存储在我的数据库上的表中,并在注销时将其删除。

这种方法有什么不对吗?如果我应该做什么而不是它?

4 个答案:

答案 0 :(得分:1)

通常你会做类似

的事情
$_SESSION['logged_in'] = 1;

当用户登录时,检查

if (isset($_SESSION['logged_in']) { ...

在后续请求中查看页面上的用户是否已登录。

无需数据库。您可以在用户登录会话时输入您需要的任何详细信息,例如用户的用户名或其他标识符。

您的方法存在的一个问题是大多数人没有明确退出网站,他们只是关闭标签/窗口,而您不知道何时发生这种情况。另一个原因是IP地址不能唯一地识别用户。

答案 1 :(得分:1)

嗯,是的..
您的用户在您的网站上可能更改的IP,或者实际上可能用于多台计算机(使用NAT)。基本上任何网络都可以有多台使用相同IP的计算机,如果一台计算机上有一个人登录,则同一网络上的另一台计算机也会登录。

通常的方法是将他的用户信息存储在会话中。此会话仅标记他的计算机(因为会话ID存储在cookie中)。

另外,为了减少对数据库的查询,我通常只是在登录时将他的用户名,id等加载到会话中,然后在他退出时清除会话。

答案 2 :(得分:1)

如果您使用的是PHP,那么:

 $_SESSION['logged_in_user'] = $username;
 ...
  // When you want to display something that is only for logged in users you do this:
  if (!empty($_SESSION['logged_in_user']))
  {
    // Authenticated user
    ...
  }
  else
  {
   // Not authenticated user
   ...
  }

当他退出时,你会从会话中删除用户名

if(isset($_SESSION['logged_in_user']))
{
  session_unset($_SESSION['logged_in_user']);
}

答案 3 :(得分:-1)

在您的登录中,您可以设置会话变量:

$_SESSION['is_logged_in'] = true;

然后在需要登录的页面上进行检查:

<?php
  if (!isset($_SESSION['is_logged_in']))
  {
    // redirect to login page
  }
?>

这是一种非常简单的方法,但会让你开始朝着正确的方向前进。