是否可以使用动态cookie名称?

时间:2013-02-28 05:01:25

标签: php dynamic cookies

对于我的项目,我使用cookie自动登录用户。但是,我不希望用户知道哪些cookie用于什么目的。

出于这个原因,我决定加密cookie的名称以及内容。解密这些cookie的内容以供使用不会造成太大麻烦。它完全按照我的要求运作。但是,为了兼容性和动态性,我试图通过名称动态调用cookie,使用类似的代码:

if(isset($_COOKIE[$encryption->decrypt('username')]){ ... }

但这似乎不起作用。也没有使用cookie的加密名称设置变量,如下所示:

$cookie_name = $encryption->decrypt('username');
if(isset($_COOKIE[$cookie_name]){ ... }

我目前使用这个脚本的方式(有效,但似乎有点草率)是这样的:

if(isset($_COOKIE['Nm9yNCtoK1lTY2M5TnhKWnRvL0NjUT09']){ ... }

有没有办法正确地执行此操作,或者我是否被强制通过预先加密的名称来调用cookie,就像我目前所做的那样?

2 个答案:

答案 0 :(得分:2)

您永远不想使用Cookie来存储用户数据,而是使用$ _SESSION并使更长时间的用户使用此代码:

session_set_cookie_params ((14 * 24 * 60 * 60),  '/', '.yoursite.com');
//Set the session for 14 days, on all paths, on all subdomains of yoursite.com  

这将比浏览器关闭时间更长,并在下次打开时继续会话。

例如,在login.php,您可以拥有:

if ($remembermechecked) {
session_set_cookie_params ((14 * 24 * 60 * 60),  '/', '.yoursite.com');}

当$ remembermechecked为true时,会话将持续14天。

答案 1 :(得分:1)

如上面的评论中所述,使用会话是明智的。

在PHP中,会话可以是“持久的”...... AKA:当用户关闭浏览器时不要迷路。

检查这个答案。

https://stackoverflow.com/a/9797962/1521230

编辑:

要在每个请求上“重置”会话cookie持续时间,在每个页面上的session_start()之后,您还需要使用session_regenerate_id(TRUE)。