У меня есть 2 установки codeigniter, работающих на одном сервере.
первое приложение: localhost / aa / index.php
второе приложение: localhost / aa / invoice / index.php
Второе приложение находится в первой папке приложения. В живой среде они будут находиться в одном домене. Я пытаюсь получить единый вход для работы, поэтому, если у меня есть пользовательские данные, установленные в приложении aa, я также могу проверить его в папке счета.
Есть ли способ поделиться сеансами.
Поскольку папки всегда будут в одном домене, я открыт для работы с сеансами вне библиотеки ci (только php).
Изменить: они показывают тот же идентификатор сеанса, когда у них нет данных. В тот момент, когда я добавляю некоторые переменные в одно приложение, другое не синхронизируется.
Также у меня есть сессии, которые хранятся в базе данных (оба приложения используют одну и ту же базу данных).
Пожалуйста, предложите.
Благодаря! 🙂
Codeigniter по какой-то причине откатывает собственную реализацию сеанса, а не собственные PHP-сессии.
http://codeigniter.com/user_guide/libraries/sessions.html
У вас есть выбор:
Очевидно, что вам нужно убедиться, что ваш идентификатор сеанса настроен правильно, чтобы оба приложения могли читать из одних и тех же данных сеанса. Если вы используете реализацию базы данных, вам необходимо убедиться, что оба приложения могут получить доступ к одному и тому же БД.
Чтобы добавить к сложности, если вы решите зашифровать сеансы, соль, используемая классом шифрования, также должна быть одинаковой в обоих приложениях, так что один из них может дешифровать общие данные сеанса.
$config['sess_cookie_name'] = 'myvalue';
В файле config.php вы можете установить одно и то же значение в обоих приложениях CI., С «файлами» Session Drivers
CI_Session Object
([userdata] => Array ([__ci_last_regenerate] => 1490351129 [Level] => 1 [User] => 103 [Fullname] => Ruben Caldera)
[_driver:protected] => files [_config:protected] => Array ( [cookie_lifetime] => 600 [cookie_name] => MyHiddenValue [cookie_path] => / [cookie_domain] => [cookie_secure] => [expiration] => 600 [match_ip] => [save_path] => /tmp )
)
Если я могу … Я заметил, что те проблемы дизайна, которые не практичны и противоречат нормальному соглашению, должны служить основой для длительных и глубоко укоренившихся проблем …. Вы должны спросить себя, что действительно необходимо / целесообразно делиться данными сеанса между 2 различными версиями фреймворка, когда мы знаем, что они 2 разные версии по той причине, что они делают что-то по-другому … Я могу только сказать, что независимо от того, что вы делаете .. этот недостаток дизайна сделает вашу архитектуру хрупкой и рано или поздно вам придется свалить его.
Plz сообщите мне, если позже вы узнаете иначе ..
Если вы устанавливаете код на том же сервере, используя тот же ключ шифрования, по умолчанию обе установки будут использовать сеанс. Фактически, я обнаружил, когда я скопировал установку codeigniter для другого клиента, но на том же сервере. Я думал, что это ошибка, поскольку я волновался.
$config['encryption_key'] = 'epitome';
Имя конфигурации encryption_key
будет одинаковым для обеих папок приложения.
Путь к изменению encryption_key
в codeigniter – application/config/config.php
строки 228.
Если вы переместите код на тот же сервер, оба сеанса начнут делиться по умолчанию.