У меня есть сайт, который использует www.example.com для стандартных страниц и secure.example.com для HTTPS. Я пытаюсь установить cookie при входе пользователя в систему, который будет действителен и в версиях HTTP и HTTPS сайта.
Я делаю это, установив путь к «/» и домену в «.example.com». Это отлично работает в Firefox и Internet Explorer, но в Chrome cookie работает только с версией сайта, на котором он был установлен ( http://www.example.com или https://secure.example.com )
Это ошибка, или я делаю что-то неправильно? Если это ошибка, есть ли обходной путь?
Файл cookie устанавливается PHP в заголовках.
setcookie("login",base64_encode($email."::".md5($password)),2840184012,"/",".example.com");
Вы не можете установить cookie как для HTTP, так и для HTTPS одновременно. Вам нужно установить два отдельных файла cookie: один для HTTP и один для HTTPS:
setcookie("login", base64_encode($email."::".md5($password)), 2840184012, "/", ".example.com"); setcookie("login", base64_encode($email."::".md5($password)), 2840184012, "/", ".example.com", true);
Это работает, только если вы установили файлы cookie на странице https://secure.example.com, поскольку вы можете устанавливать безопасные файлы cookie через HTTPS.
О, и кстати: Не храните информацию об аутентификации в cookie! Вместо этого используйте действительный токен аутентификации.