Я хочу, чтобы мои пользователи из одной службы в поддомене/домене могли сразу войти в остальные.
Это моя структура:
- /library
- /app1
- config
- модули
- начальная загрузка
- /app2
- config
- модули
- начальная загрузка
- /app3
- config
- модули
- начальная загрузка
- /app1
Домены
- Приложение 1: example.com
- Приложение 2: app2.example.com
- Приложение 3: app3.example.com
Все они используют одну базу данных для учетных записей, сеансов и т. д.
Я попытался заставить Session_Db_Adpater работать, когда кто-то входит в одно из приложений и сохраняет свой IP-адрес в базе данных.
Затем, когда он входит в другой скрипт (в том другом, оф.ч.) должен проверить, есть ли у него запись в таблице, и если он есть, скрипт должен сделать активным сеанс к этому или не создает ли он новый.
Пробная версия 1: я попытался просто обновить session_data до нового идентификатора из старого, но session_data отказывается обновляться, хотя $db->update() возвращает true.
Trial 2 Я отключил Session_SaveHandler_DbTable и попробовал это, потому что в конце концов они находятся в одном домене:
Zend_Session::setOptions(array('cookie_domain' => '.example.com'));
Zend_Session::start();
Пока ничего.
Пробная версия 3. Я использовал Zend_Session::setId();
$db = Zend_Registry::get('users_db');
$test = $db->select()->from('session')->where('ip = ?', $_SERVER['REMOTE_ADDR']);
$row = $db->fetchRow($test);
if($row) {
Zend_Session::setId($row['session_id']);
} else {
Zend_Session::start();
$db->update('session', array('ip'=>$_SERVER['REMOTE_ADDR']), 'session_id = "'. Zend_Session::getId() .'"');
}
И работает 2-5 мин и потом выдает такую ошибку: Сессия уже запущена. Идентификатор сеанса должен быть установлен первым.
Я заметил, что когда я вхожу, например, app3.example.com , сеанс не вставляет строку в базу данных. Адаптер работает хорошо, потому что я проверил несколько тестовых запросов, и они работают.
Я добавил в конфигурацию SessionHandler что-то вроде этого:
$config = array(
'db' => Zend_Registry::get('users_db') , //or alone 'main_db'
Остальная часть конфигурации по умолчанию, как в ссылке.
Пожалуйста помоги.