PHP-сессия не восстанавливается из файлов cookie - PullRequest
0 голосов
/ 01 февраля 2012

Когда пользователь возвращается на мой сайт, он пытается восстановить свой последний сеанс из ассоциативного массива $_COOKIE. Это не работает, как ожидалось. Я могу заглянуть в диспетчер файлов cookie моего браузера и убедиться, что они есть, но, похоже, они не сохраняются в ассоциативный массив $_SESSION.

По сути, это поток программы, когда пользователь возвращается на мой сайт:

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

session_start();

...

$some_var = $_SESSION[$var_name];

У меня что-то не так, или я не должен перезаписывать PHPSESSID? Любое понимание того, что я делаю неправильно, будет оценено. Спасибо.

Ответы [ 2 ]

2 голосов
/ 01 февраля 2012

Вы перепутали сессии и куки.Вам не нужно помещать вещи в массив $_COOKIE.Просто используйте session_start() и затем поместите вещи в $_SESSION.Затем PHP автоматически будет управлять сессией / cookie для вас.

$_COOKIE переменные хранятся в браузере пользователя, поэтому они не защищены и могут управляться пользователем => угроза безопасности.

$_SESSION переменные хранятся только на сервере.Единственное, что хранится в куки - это session_id, поэтому переменную $_SESSION нельзя манипулировать.

Имеет ли это смысл?

1 голос
/ 01 февраля 2012

Поставьте session_start() перед чем-либо еще; эта функция инициализирует данные сеанса, к которым вы будете обращаться в $_SESSION.

Не совсем уверен, чего вы пытаетесь достичь с помощью всего остального, но session_start() сначала является отправной точкой ...

...