Здравствуйте!
Столкнулся с проблемой - пользователи браузера Internet Explorer 6.0 не могут залогиниться на сайт.
Сайт находится в локальной сети. Программное обеспечение сервера:
Apache 2.0.55
MySQL 5.0.18
PHP 5.2.5
Drupal 5.5
Нашел несколько обсуждений этой проблемы, но все они касаются версии Drupal 4.х. Части кода, которые предлагается изменить в модуле user для решения проблемы в версии 5.5 в этом модуле попросту отсутствуют.
Подскажите, пожалуйста, как можно решить эту проблему?
Комментарии
PS
Проблема воспроизводится на локальной машине если в строке браузера (IE 6.0) пишу http://comp_name/drupal/
Если на страницу заходить как http://localhost/drupal/ , то залогиниться удается.
Firefox авторизуется как по первой, так и по второй ссылке.
что-то с кукисами сталося...
Возможно, дело в High Security (или Privacy) в IE6+. Для того, что IE6+ принимал куки, сервер должен посылать специальный заголовок P3P, содержащий информация, ЗАЧЕМ сервер пытается установить куки.
Заголовок состоит из 2-х полей: policyref - ссылка на xml-файл с подробным описанием и CP (Compact Policy) - тоже самое, но в виде нескольких условных сокращений. Вот это поле IE6+ прямо-таки желает видеть!
Попробуйте прилагаемый модуль p3p, когда-то писал для себя, но руки так и не дошли выложить на офф. сайт.
В настройках модуля поле policyref оставьте пустым, если нет файла с подробным описанием, а в CP можете указать "NON DSP CURa ADMa DEVa TAIa OUR IND ONL UNI" - у меня так работает.
Более подробная информация о протоколе на http://en.wikipedia.org/wiki/P3P
Спасибо за помощь.
К сожалению, установка модуля p3p не изменила ситуацию.
Встретил в одном из обсуждений совет установить вручную значение параметра session.coockie_domain.
Попытки самостоятельно установить его "правильное" значение проблему не решили и более того, приводили к отсутствию возможности залогиниться хоть как-то. Единственный вариант, который не ухудшил ситуацию, это добавление в settings.php
if (isset($_SERVER['HTTP_HOST'])) {
$domain = '.'. preg_replace('`^www.`', '', $_SERVER['HTTP_HOST']);
// Per RFC 2109, cookie domains must contain at least one dot other than the
// first. For hosts such as 'localhost', we don't set a cookie domain.
if (count(explode('.', $domain)) > 2) {
ini_set('session.cookie_domain', $domain);
}
}
Впрочем, даже в комментариях к этому коду указано, что для локально расположенных сайтов он ничего не делает.
Буду благодарен за любые подсказки и помощь, так как самостоятельно отладиться и более плотно поработать с исходниками пока не позволяет уровень знаний PHP.
Проблема все еще актуальна. Попробовал установить Drupal 6 - та же ситуация. Не удается залогиниться из-под MS IE если в качестве адреса указывается не localhost. Может ли такая проблема быть вызвана тем, что сайт вертится на PHP 5?
может дело в том что вид у http://comp_name/drupal/ какой-то не доменный? там где-то точки не хватает и подчеркивание лишнее - в доменах не бывает - вот и не может броузер правильно куки сделать
Огромное спасибо!
Проблема оказалась именно в этом. Как только попробовал обратиться к серверу по IP-адресу все получилось. Сегодня же попрошу админов переименовать мою машину (у нас корпоративная система именования компьютеров такая - i_ivanov, p_petrov и т.п.)
Да, действительно, именно в этом и есть загвоздочка... Я тоже долго на мог понять, почему только через IE не удается залогиниться. Спасибо за подсказку.