我刚刚为我的网站制作了注册表单,但是我对如何记住用户通过会话登录没有任何了解。我想我可以在验证时将其IP存储在我的数据库上的表中,并在注销时将其删除。
这种方法有什么不对吗?如果我应该做什么而不是它?
答案 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
}
?>
这是一种非常简单的方法,但会让你开始朝着正确的方向前进。