Intereting Posts
Включает () / require () с «побочными эффектами» плохую практику? Сохранение обрезанного изображения в различной ширине и высоте Загрузка многостраничного изображения на PHP-сервер из приложения iOS Несколько видов просмотра Codeigniter в одном представлении MYSQL Выбор точного слова с запросом MATCH? PHP конвертирует десятичную дробь и обратно? Как перенаправить ошибки, сгенерированные в Bootstrap, на ErrorController? Получить содержимое страницы, требующее аутентификации в PHP Сайты, которые помогут мне создать тег в PHP (например, теги на этом сайте) Как я могу добавить подсказку с драйвером в процесс проверки magento onepage? Вставка дат формата mm / dd / yyyy в MySQL Удаление значений с более чем двумя десятичными знаками в массиве Передача переменной PHP в код Javascript Запрос был черным – CakePHP Преобразование таблицы HTML в CSV автоматически с использованием PHP?

Обмен сеансами между двумя приложениями CodeIgniter

У меня есть 2 установки codeigniter, работающих на одном сервере.

первое приложение: localhost / aa / index.php

второе приложение: localhost / aa / invoice / index.php

Второе приложение находится в первой папке приложения. В живой среде они будут находиться в одном домене. Я пытаюсь получить единый вход для работы, поэтому, если у меня есть пользовательские данные, установленные в приложении aa, я также могу проверить его в папке счета.

Есть ли способ поделиться сеансами.

Поскольку папки всегда будут в одном домене, я открыт для работы с сеансами вне библиотеки ci (только php).

Изменить: они показывают тот же идентификатор сеанса, когда у них нет данных. В тот момент, когда я добавляю некоторые переменные в одно приложение, другое не синхронизируется.

Также у меня есть сессии, которые хранятся в базе данных (оба приложения используют одну и ту же базу данных).

Пожалуйста, предложите.

Благодаря! 🙂

Codeigniter по какой-то причине откатывает собственную реализацию сеанса, а не собственные PHP-сессии.

http://codeigniter.com/user_guide/libraries/sessions.html

У вас есть выбор:

  1. хранилище cookie (не идеальное, небольшой размер хранилища, конфиденциальные данные в cookie?).
  2. сеансы базы данных (сохраняются с использованием cookie-файла сеанса).
  3. Переопределите и сверните свой собственный (для использования собственных php-сессий!)

Очевидно, что вам нужно убедиться, что ваш идентификатор сеанса настроен правильно, чтобы оба приложения могли читать из одних и тех же данных сеанса. Если вы используете реализацию базы данных, вам необходимо убедиться, что оба приложения могут получить доступ к одному и тому же БД.

Чтобы добавить к сложности, если вы решите зашифровать сеансы, соль, используемая классом шифрования, также должна быть одинаковой в обоих приложениях, так что один из них может дешифровать общие данные сеанса.

 $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.

Если вы переместите код на тот же сервер, оба сеанса начнут делиться по умолчанию.