PHP会话无法从Cookie恢复

时间:2012-01-31 22:23:36

标签: php session cookies session-cookies

当用户返回我的网站时,它会尝试从$_COOKIE关联数组恢复其上一个会话。它没有按预期工作。我可以查看浏览器的cookie管理器,看看cookie是否存在,但它们似乎没有保存到$_SESSION关联数组中。

这实际上是用户返回我的网站时的程序流程:

foreach ( $_COOKIE as $name => $val )
{
  $_SESSION[$name] = $val;
}

session_start();

...

$some_var = $_SESSION[$var_name];

我是否有不正常的事情,或者我是否应该覆盖PHPSESSID?任何关于我做错的见解都将不胜感激。感谢。

2 个答案:

答案 0 :(得分:2)

您将会话和Cookie混为一谈。您不需要将内容放入$_COOKIE数组中。只需使用session_start(),然后将内容放入$_SESSION。 PHP将自动为您管理会话/ cookie。

$_COOKIE个变量存储在用户浏览器中,因此它们不安全且可由用户操作=>安全风险。

$_SESSION变量仅存储在服务器上。存储在cookie中的唯一内容是session_id,因此$_SESSION变量无法被操纵。

这有意义吗?

答案 1 :(得分:1)

session_start()放在其他任何地方之前;此函数初始化您将在$_SESSION中访问的会话数据。

不完全确定你要完成的其余部分,但session_start()首先是一个起点......