Я работаю над старым приложением, которое использует CodeIgniter 2.1.3. Во время разработки он работает на vhost, доступном по адресу http: // vhostname / app (что равно xampp / htdocs / project / app).
Я скопировал живую систему 1: 1 в мою систему разработки (с базой данных и всем остальным).
Система использует сеансы для хранения временных данных для посетителей (например, тележки). Моя проблема: при моем развитии env сеанс уничтожается при каждом обновлении. После некоторого тестирования я обнаружил, что это происходит в system/core/Sessions.php
:
// encryption was not used, so we need to check the md5 hash $hash = substr($session, strlen($session)-32); // get last 32 chars $session = substr($session, 0, strlen($session)-32); // Does the md5 hash match? This is to prevent manipulation of session data in userspace if ($hash !== md5($session.$this->encryption_key)) { log_message('error', 'The session cookie data did not match what was expected. This could be a possible hacking attempt.'); $this->sess_destroy(); return FALSE; }
Но я понятия не имею, почему это происходит и медленно заканчивается идея.
Единственное упоминаемое различие между системой live и dev:
Обновление: по крайней мере, я только что нашел причину, по которой хэш не соответствует ключу шифрования. Я wp-head.php
из WordPress, чтобы получить доступ к функциям WordPress. Но, похоже, мои сеансы «развратились» на этом этапе – без включения сеанса в живую.
Обновление 2: Хорошо, я думаю, я приближаюсь. Я попытался сравнить файлы cookie сеанса, один с включенной версией wordpress и без нее. На самом деле есть большая разница:
Файл cookie с WordPress включал:
a:6:{s:10:\"session_id\";s:32:\"8e3b975d0b30f6b229f475b2f03947a0\";s:10:\"ip_address\";s:9:\"127.0.0.1\";s:10:\"user_agent\";[...]
Без WordPress:
a:6:{s:10:"session_id";s:32:"7451cd27e1b45d2c7b8a042ed6b2bf9e";s:10:"ip_address";s:9:"127.0.0.1";s:10:"user_agent";[...]
Откуда берутся эти кавычки?
Благодаря!