| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Сессии в поддоменах |
| Автор: Majesty 20.12.2010, 14:51 | ||
| Есть группа сайтов (поддомены одного домена). www.domain - лежит в корневой папке домена passport.domain - лежит в папке passport и т.д. На всех сайтах есть форма авторизации, проверяющая, авторизован ли пользователь (читает сессию). Если пользователь авторизован - ему выдаётся меню со ссылками. Если не авторизован - выдаётся непосредственно форма авторизации (логин, пароль, сабмит), отправляемая на passport.domain/login?site=сайт. Если заполнять форму с passport.domain авторизация работает отлично. Если заполнять с www.domain - создаётся пустая сессия и авторизация не проходит. В самом скрипте login.php всё в порядке - проверял, данные вычитываются из базы и складываются в $_SESSION. На диске файл с "чужой" сессией занимает 0 байт В 5.2.13 (и, кажется, в 5.3.2) всё работало, вчера обновился до 5.3.3 - вылез косяк. В php.ini всё выставлено как надо - куки сессии отдаются с путём / и доменом .domain (т.е. "любой поддомен для domain"), время жизни - 0 (до закрытия браузера). Чему свидетельство - файрбаг - перемещаясь по сайтам наблюдаю везде одинаковую куку PHPSESSID. После логина на passport.domain кука меняется. Если логин идёт с www.domain - остаётся прежней (и соответствующий файл с сессией не дописывается). Если после удачного логина на passport.domain перейти на www.domain сессия обнуляется, кука не меняется. Пыха работает в режиме cgi/fast-cgi, сервер lighttpd 1.4.26 Добавлено @ 14:58 Вот код:
|
| Автор: Majesty 20.12.2010, 18:45 |
| Мешает Suhosin Patch. Без него всё работает замечательно. Может есть какая-то настройка? Чтобы его полностью не отключать... |
| Автор: Majesty 21.12.2010, 09:38 | ||
нужно было добавить в конфиг это:
|