Configurando um cookie em uma solicitação AJAX?

Estou validando um formulário de login com jQuery AJAX call para PHP. Na php, eu criei uma session e, se fizerem check-out da checkbox de seleção ‘Remember me’, eu quero criar um cookie. Aqui está o código php:

 

A session é definida com sucesso, no entanto, o cookie não está definido. Eu tentei configurar todos os valores (domínio, caminho, etc.), mas isso não mudou nada. Há algo de óbvio que eu estou perdendo?

Aqui estão algumas sugestões:

  • Certifique-se de que está especificando o formato de caducidade correto da data
  • Ao configurar um cookie em uma página que redireciona, o cookie deve ser configurado após a chamada para o header('Location: ....'); por exemplo:

    header('Location: http://www.example.com/'); setcookie('asite', $site, time()+60*60, '/', 'site.com');

  • Se você tiver urls humanos como www.domain.com/path1/path2/ , então você deve definir o caminho do cookie para / para trabalhar para todos os caminhos, e não apenas um atual.

    setcookie('type_id', $new_type_id, time() + 60*60*24*30, '/');

Observe o último / nos argumentos.

Do manual do PHP:

O caminho no servidor no qual o cookie estará disponível. Se configurado para ‘/’, o cookie estará disponível em todo o domínio. Se configurado para ‘/ foo /’, o cookie só estará disponível no diretório / foo / e todos os subdiretórios, como / foo / bar / of domain. O valor padrão é o diretório atual no qual o cookie está sendo configurado.

  • setcookie() define um cookie a ser enviado junto com o restante dos headers HTTP. Como outros headers, os cookies devem ser enviados antes de qualquer saída do script, o que significa que não deve haver instruções de eco html / código antes disso.

Você não poderá configurar o servidor do cookie ao usar uma chamada AJAX. Em vez disso, espere até obter uma resposta bem-sucedida e configure o lado do cliente de cookies. Para facilitar, você pode usar um plugin jQuery .