我们可以在同一个项目中为我们的cookie和会话变量指定相同的名称吗?假设我们在cookie中存储了一个用户名“user_name”,那么我们可以使用相同的变量来存储会话吗?
关注是否可行并且可以这样做?
setcookie("user_name", $user_name, time() + 3600);
和
$_SESSION['user_name'] = $user_name;
或者它会进一步产生任何问题吗?
答案 0 :(得分:1)
是的,确保会话数据将存储在服务器中,相关的会话ID cookie将在客户端设置,因为您将用户名存储为cookie但不鼓励将敏感数据存储为cookie
答案 1 :(得分:1)
你可以做到。
当你这样做时:
setcookie("user_name", $user_name, time() + 3600);
创建一个cookie并将其存储在浏览器中,名称为user_name
。
当你这样做时:
$_SESSION['user_name'] = $user_name;
在服务器中生成一个会话,该会话具有一个名为user_name
的字段。现在,此会话信息以cookie的形式在浏览器和服务器之间传递,该cookie仅具有与访问会话相关的信息,而不是包含所有会话数据。
由于此会话未命名,因此将使用默认PHPSESSID
除了两个操作都涉及cookie之外,它们没有任何共同之处。唯一需要注意的是,如果您将会话命名为具有相同名称的无关cookie。会话中的值绑定在该范围内,并不重要 - 如您给出的示例。
答案 2 :(得分:1)
没关系,他们不会互相影响。
在php中使用session只会创建一个PHPSESSID
cookie。
但是为什么你需要在cookie和会话中保存相同的东西?在这种情况下,在会话中存储就足够了。
答案 3 :(得分:1)
这不是问题。您可以为$_POST/$_GET/$_COOKIE/$_SESSION
使用相同的名称,但是当访问值时,您需要使用正确的数组。如果数据保存在$_SESSION['user']
中,您需要使用$_SESSION['user']
而不是$_COOKIE['user']
,因为它可能包含完全不同的值。
我不知道您为什么要存储用户Cookie名称,但我希望它不是出于授权目的。用户当然可以更改其cookie值,然后可以将其记录为其他用户。