Так что я SessionHandler класс, и мой другой файл, положить, что в движение, как это (cfg_session.php):session_id себя причудливо
use \Classes\MySessionHandler as Sessao;
$sessao = new Sessao();
// PHP < 5.4
session_set_save_handler(
array($sessao, 'open'),
array($sessao, 'close'),
array($sessao, 'read'),
array($sessao, 'write'),
array($sessao, 'destroy'),
array($sessao, 'gc')
);
register_shutdown_function('session_write_close');
session_start();
Alright, небольшая разница в том, что в моем localweb я использую :
session_set_save_handler($sessao)
Потому что в моем местном каталоге это действительно PHP> 5.5.
Он отлично работает на моем локальном веб-сайте, обновляю страницу, выходим из системы, заходим в систему, закрываем вкладки, открываем вкладки, снова входим в систему, и все нормально, PHPSESSID из моего браузера равен тому, который был создан на файл сеанса и т. д.
EDIT: У меня есть сервер с PHP 5.4 <, и я на самом деле, используя код, приведенный выше, предназначены для PHP < 5.4, но он по-прежнему вел себя странно. Обновляет браузер, создает другой файл сеанса, но не меняет PHPSESSID. В первый раз, когда я пытаюсь войти в систему, процесс выглядит следующим образом: он создает файл сеанса, я перенаправляю пользователя на определенную страницу, которая выполняет другой запрос на сервере, он просто создает другой файл сеанса, отличный от PHPSESSID, и, конечно же, , приложение выводит меня из системы. Это странная часть.
Но тогда я пытаюсь войти в систему снова нормально, и он вводит меня в систему, просто отлично. Каждый запрос имеет тот же идентификатор, session_regenerate_id() работает нормально, все идет ОК, PHPSESSID соответствует созданному файлу сеанса.
Но тогда, если я выйду из системы, закройте эту вкладку, откройте новую вкладку и попробуйте войти (или просто закрыть вкладки без выхода из системы), она просто делает то же самое: регистрирует меня, создает файл сеанса, но то он снова меняет session_id и выкидывает меня.
Я действительно застрял на этом. Не могу быть уверен, что это происходит из-за PHP < 5.4 или что-то еще.
Примечания: - session_regenerate_id() используется на журнал в, по проверке, если есть сессии (то время обновления и regenerateId) и на журнал из.
- cfg_session.php требуется один раз на каждой странице, что нужно использовать переменные сессии.
Мне нужно немного света на этом. Я уже видел множество тем, но ни один из них не очень информативен или не близок к решению этого странного поведения. Заранее спасибо.
Я отредактировал сообщение, чтобы узнать, если я более ясен, и я думаю, что он пропустил информацию. Но дело в том, что я использую сервер с php менее 5.4, я использую код выше, предназначенный для использования на PHP менее 5.4, хорошо? Но он все еще действует странно. –
Эта функция недоступна для php ниже 5.4, и если функция недоступна, то как ее использовать ..... – Vineet1982