Как получить доступ к одной и той же сессии в другом проекте Codeigniter на том же сервере? - PullRequest
0 голосов
/ 02 января 2019

Как получить доступ к одной и той же переменной сеанса в другом проекте codeigniter на одном и том же сервере? Пожалуйста, помогите мне . Когда я устанавливаю переменную сеанса в одном проекте, не получаю значение из другого проекта.

Ответы [ 2 ]

0 голосов
/ 02 января 2019

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

Однако вы можете сделать это с помощью:

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

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

Просто убедитесь, что ваш $ config ['encryption_key'] одинаков для обоих проектов.

Сохраните сеанс в БД и используйте одну и ту же БД для обоих проектов.

Codeiniter 2 +:

$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';

Codeiniter 3 +:

$config['sess_driver'] = 'database';
$config['sess_save_path'] = 'ci_sessions';

Codeigniter 2 MySQL:

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(45) DEFAULT '0' NOT NULL,
    user_agent varchar(120) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id),
    KEY `last_activity_idx` (`last_activity`)
);

Codeigniter 3 MySQL:

CREATE TABLE IF NOT EXISTS `ci_sessions` (
    `id` varchar(128) NOT NULL,
    `ip_address` varchar(45) NOT NULL,
    `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
    `data` blob NOT NULL,
    KEY `ci_sessions_timestamp` (`timestamp`)
);
0 голосов
/ 02 января 2019

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

В вашем конфигурационном файле

$config['sess_table_name']              = 'ci_sessions';
$config['sess_driver']              = 'database';
$config['sess_cookie_name']             = 'ci_session';

установите драйвер в качестве базы данных.

Затем создайте таблицу сеансов:

CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(40) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
`data` blob NOT NULL,
PRIMARY KEY (id),
KEY `ci_sessions_timestamp` (`timestamp`)
);

Эта таблица теперь будет использоваться кодовым указателем для хранения сеансов.Вы можете получить доступ к данным (переменным сеанса) из этой таблицы во всех своих проектах.

Обратите внимание, что codeigniter генерирует идентификатор сеанса каждые 5 минут и обновляет его.Таким образом, вам нужно отслеживать старый или родительский идентификатор на случай, если вы захотите получить к нему доступ.Кроме того, вы можете генерировать и хранить свой собственный идентификатор для ссылки, чтобы избежать использования идентификатора сессии CI.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...