Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сессии в поддоменах, Создаётся пустой файл 
V
    Опции темы
Majesty
Дата 20.12.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.3.2005
Где: Almaty, Kazakhsta n

Репутация: нет
Всего: нет



Есть группа сайтов (поддомены одного домена).
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
Вот код:
Код

$url = "www.domain";
if($_REQUEST['site']) {
    $url = $_REQUEST['site'];
}
...
$result = $db->query("... LIMIT 1");
if($db->num_rows($result) === 1) {
    sesson_start();
    $_SESSION['info'] = $db->fetch_assoc($result);
    session_write_close();
    header("Location: http://{$url}/");
    exit;
}
...
Опытным путём установлено, что если редиректить на passport.domain, то на нём я буду авторизован. Если пытаюсь редиректить на другой домен - выкидывает из авторизации.

Это сообщение отредактировал(а) Majesty - 20.12.2010, 14:59
PM MAIL WWW   Вверх
Majesty
Дата 20.12.2010, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.3.2005
Где: Almaty, Kazakhsta n

Репутация: нет
Всего: нет



Мешает Suhosin Patch. Без него всё работает замечательно. Может есть какая-то настройка? Чтобы его полностью не отключать...
PM MAIL WWW   Вверх
Majesty
Дата 21.12.2010, 09:38 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.3.2005
Где: Almaty, Kazakhsta n

Репутация: нет
Всего: нет



нужно было добавить в конфиг это:
Код
suhosin.session.cryptdocroot=Off
suhosin.cookie.cryptdocroot=Off


Это сообщение отредактировал(а) Majesty - 21.12.2010, 09:38
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0387 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.