我应该使用SESSION和COOKIE还是Just COOKIE?

时间:2013-05-09 10:57:27

标签: php session cookies

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

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

但是现在,我想要一个'记住我'复选框,为此我需要使用COOKIE。我想知道什么应该是procdure

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?

5 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

使用cookies你可以做到这两点,但数据将保留在客户端,因此你需要加密数据。

使用会话只要用户登录就可以保留数据。

所以答案是COOKIES

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

使用$ _SESSION

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

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

点击此处:http://php.net/manual/en/function.session-set-cookie-params.php

特别是:

session.cookie_lifetime

正如它所提到的那样,它的值默认为0,直到浏览器关闭。使它成为一个合理的秒数,86400一天(除非我厌倦了数学)并且你将保持他们当天登录,除非浏览器缓存被清除(浏览器关闭是常见的,但你不能做任何事情)。我认为上限是有符号整数的最大值,因此:2,147,483,647 / 86,400 = 24,855(ish)天。如果你需要的话就很多。

相关问题