Meu aplicativo da Web PHP atualmente tem seu domínio de cookie de sessão definido como example.com
. Eu gostaria de mudar isso para .example.com
. Para novos visitantes, ini_set("session.cookie_domain", ".example.com")
trabalho. Para visitantes que já possuem o cookie PHPSESSID antes de essa alteração ser feita, o domínio permanece com o valor antigo. Como posso alterar o domínio no cookie de sessão sem pedir que os usuários atuais excluam seus cookies?
- Eu não posso usar JavaScript para atualizar o cookie porque ele é HTTPOnly por razões de segurança.
- Excluir as sessões no servidor não redefine o cookie inteiro, apenas atualiza o valor do cookie (mantendo o mesmo domínio).
- Os navegadores modernos preservam a sessão nas reinicializações, portanto, mesmo que o cookie esteja definido para expirar no final da sessão do navegador, a sessão do navegador nunca termina efetivamente.
A única possibilidade que posso fazer é definir o cookie para expirar no passado e, em seguida, redirecionar para obter um novo cookie. Mas não consigo saber quais visitantes têm o domínio do cookie definido incorretamente.
Respostas:
3 para resposta № 1Definir um novo session_name()
antes de iniciar a sessão. Dessa forma, o nome do cookie é alterado e qualquer cookie antigo será ignorado. Apenas novos cookies serão enviados e funcionarão para a sessão.