0

我的网站中有一个用户登录系统,但我很困惑。目前我在用户登录系统中没有“记住我”复选框。目前我正在使用这样的东西来登录用户。

$_SESSION['user_id'] = $_POST['user_id'];
$_SESSION['user_name'] =$_POST['user_name'];

但是现在,我想放置一个“记住我”复选框,为此我需要使用 COOKIE。我想知道应该是什么程序

If user checks the 'Remember Me' Checkbox I need to use COOKIE. 
But If user does not check the 'Remember Me' Checkbox should I use SESSION? or COOKIE?
4

5 回答 5

2

不要将密码存储在 cookie 中。创建一个新的随机值作为用户名和密码的组合,并将其存储在 cookie 和您的用户数据库中。

此随机值的要求:它必须是唯一的(如用户名/密码组合),并且必须是加密随机的,而不仅仅是“散列当前时间”伪随机。或rand()。或mt_rand()

请求将尝试继续会话。如果不成功,首先验证请求是否存在 remember-me cookie。这将触发在数据库中的查找,并且可能会找到用户。此用户必须在此会话中登录。

否则,询问用户名和密码。

于 2013-05-09T12:40:36.473 回答
0

使用 cookie,您可以同时执行这两项操作,但数据将保留在客户端,因此您需要加密数据。

对于会话,您只能在用户登录时保留数据。

所以答案是饼干

于 2013-05-09T11:02:57.410 回答
0

对于会话,无论如何您都需要 cookie,因为会话 ID 存储在 cookie 中。

对于“记住我”功能,您可以延长会话 cookie 的生命周期(默认 0 - 在浏览器会话结束时过期)。因此,当用户登录时,如果勾选“记住我”,设置会话 cookie 会过期一段时间(比如 1 周),如果未勾选“记住我”,则设置会话 cookie 会过期为 0(在浏览器结束时)会议)。

于 2013-05-09T11:03:17.050 回答
0

您需要将 SESSION ID 存储在某处。这可以是GET附着在每个GET请求上的 cookie 或参数。通常,调用时会自动使用 cookie session_start()

于 2013-05-09T11:04:11.193 回答
0

使用 $_SESSION

会话将其用户名和密码等数据保存在服务器上,并给用户一个带有会话ID的cookie,它告诉服务器哪一组数据属于哪个浏览器,它称为会话cookie(还有其他存储会话 ID 的方法,但这超出了范围)。只要会话 cookie 保留在浏览器缓存中并且有效(不会过期),它们就会保持登录状态。

“保持登录”功能可以通过延长会话 cookie 的到期时间来实现。这可能是您最安全的选择。但是,如果您想深入研究,您将需要阅读会话劫持。

看看这里: http: //php.net/manual/en/function.session-set-cookie-params.php

尤其是:

session.cookie_lifetime

正如它所提到的,它的值默认为 0,直到浏览器关闭。将其设置为合理的秒数,86400 1 天(除非我对数学感到厌烦),除非浏览器缓存被清除,否则您将让他们在一天内保持登录状态(关闭浏览器是常见的,但你对此无能为力)。我认为向上的上限是有符号整数的最大值,因此:2,147,483,647 / 86,400 = 24,855(ish) 天。如果你需要的话,这么多。

于 2013-05-09T11:24:50.123 回答