我们可以在项目中使用相同的cookie和会话变量名称 - PHP吗?

时间:2014-07-30 06:28:04

标签: php session cookies

我们可以在同一个项目中为我们的cookie和会话变量指定相同的名称吗?假设我们在cookie中存储了一个用户名“user_name”,那么我们可以使用相同的变量来存储会话吗?

关注是否可行并且可以这样做?

setcookie("user_name", $user_name, time() + 3600);

$_SESSION['user_name'] = $user_name;

或者它会进一步产生任何问题吗?

4 个答案:

答案 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值,然后可以将其记录为其他用户。