time

IE6 не устанавливает cookies

cookie_php.jpg

Обнаружил, что IE6 не принимает пароль для WordPress страницы, установленный в ‘Защитить страницу паролем‘. После ввода пароля, IE6 редиректится на ту же страницу, но поле для ввода пароля отображается по-прежнему. В следующей версии Internet Explorer 7 – все ок, пароль принимается и отображается содержимое защищенной страницы, в остальных браузерах тоже все работает. Полез смотреть в wp-pass.php, куда WordPress редиректит после ввода пароля – все варианты, которые я пробовал – тсчетны ослик 6 уперся и не воспринимал ни один из них.

Дальше начал смотреть в сторону PHP, setcookie, $_COOKIE. Оказалось, что ослик может не устанавливать кукисы (а соответственно и сессии) по одной из следующих причин:

  1. Особенная реализация (читай: через одно место :) ) P3P в IE 6, лечиться отправкой специального HTTP заголовка :
    header('P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
    
    Этот способ может и не сработать.
  2. В имени устанавливаемой кукис переменной присутсвует _ (знак подчеркивания), способ лечения – удаляем знак подчеркивания в имени переменной.
  3. Не правильное вычисление даты окончания (timeout) cookies. Если сервер находится в другом часовом поясе, по сравнению с клиентом, то в IE6, после вычисления разницы времени, получается просроченная дата кукиса . В правильных браузерах время перед расчетом приводиться к одной отправной точке – UTC. Способ лечения – коррекция времени на клиенте по NTP.

Эти способы мало пригодны, если сайт отлаживается на standalone IE (параллельно установлено несколько IE).

blog comments powered by Disqus