PHP: продолжайте получать старый идентификатор сессии после закрытия браузера
Я установил скрипт PHP5, который использует сессии. Начало сеанса проходит успешно, а также создает файл cookie (как и ожидалось).
Однако после закрытия браузера (Firefox 19.0.2 на Mac OSX Mountain Lion) и открытия браузера идентификатор сессии остается прежним. Даже через пару дней. Это однако, в то время как session.cookie_lifetime установлен в 0
В PHP я использую это, чтобы начать сеанс:
//set cookie params: lifetime, path, domain, https, http-only
session_set_cookie_params(0, "/", null, false, true);
session_name('MySession');
//start session
session_start();
Вот мой PHP.ini
session.use_cookies = 1
session.use_only_cookies = 1
session.cookie_httponly = 1
session.cookie_lifetime = 0
session.cookie_path = /
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.hash_function = 1
session.hash_bits_per_character = 6
session.save_path = /var/lib/php5
session.name = PHPSESSID
Файлы сеанса не удаляются в /var/lib/php5. После сеанса session_destroy() файлы будут удалены.
Однако после повторного использования сценария (запуска сеанса) я получу старый идентификатор сеанса. В прошлую пятницу я вышел из системы со своего компьютера, и теперь я вернулся, у меня все еще есть этот старый идентификатор сессии. Мне бы очень хотелось иметь новый идентификатор сессии после закрытия браузера (команда Q)
Я только что прочитал о неприглядной "функции" Firefox, которая хранит куки для вас, как будто вы никогда не закрывали браузер.
Я думаю, что это может быть просто причиной. Поскольку я не хочу этого, мне нужно найти обходной путь.
Можете ли вы посоветовать мне об этом?
1 ответ
Вы должны установить время жизни куки в функции, иначе оно останется там. Вы должны предоставить некоторое время истечения там. Вот несколько примеров, предоставленных http://php.net/manual/en/function.session-set-cookie-params.php