Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

joaohenrique010

Problema com cookies [PHP]

Recommended Posts

Olá! Tenho o seguinte formulário:

 

<form method="POST" action="">
<button type="submit" class="lang-input" value="English" name="lang">English <img src="images/flags/USA_flag_icon.png" style="position: relative; left: 5px;"></button>
<button type="submit" class="lang-input" value="Portuguese" name="lang">Português <img src="images/flags/BRAZIL_flag_icon.png" style="position: relative; left: 5px;"></button>
<button type="submit" class="lang-input" value="Spanish" name="lang">Español <img src="images/flags/SPAIN_flag_icon.png" style="position: relative; left: 5px;"></button>
<button type="submit" class="lang-input" value="French" name="lang">Français <img src="images/flags/FRANCE_flag_icon.png" style="position: relative; left: 5px;"></button>
<button type="submit" class="lang-input" value="German" name="lang">Deutsch <img src="images/flags/GERMANY_flag_icon.png" style="position: relative; left: 5px;"></button>
<button type="submit" class="lang-input" value="Japanese" name="lang">日本人 <img src="images/flags/JAPAN_flag_icon.png" style="position: relative; left: 5px;"></button>
<button type="submit" class="lang-input" value="Russian" name="lang">Pусский <img src="images/flags/RUSSIA_flag_icon.png" style="position: relative; left: 5px;"></button>
</form>

O PHP está programado de forma que, quando houver um submit nesse formulário, cria-se um cookie cujo valor é o idioma escolhido. Todo o sistema de cookies está funcionando corretamente, exceto por uma coisa: quando clica uma vez no botão do idioma nada acontece, o idioma só se altera de fato quando clica no botão e atualiza a página pelo menos uma vez. Eu queria que na mesma hora que clicasse no botão, os efeitos do cookie já valessem. Como faço isso?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

cookies são salvos no cliente e enviados pelo cliente. Ou seja, o cookie é gerado e enviado para o cliente. E o cookie só sera enviado de volta na próxima requisição. Por isso é necessário recarregar a página

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu outro problema: loop infinito; Como resolvo?


Resolvido! O problema é que eu estava usando o "header('Location: /');" desta forma:

if (isset($_COOKIE['language'])) {
header('Location: /');
}

O correto é:

if (!empty($language)) {
header('Location: /');
}
// $language = variável cujo valor é $_POST['lang'] (lang = input de um formulário de seleção do idioma)

/* Esse outro método funcionou porque o header('Location: /'); só será ativado quando a variável $language não estiver vazia, ou seja, a função header só será executada uma vez.

*/

 

Obrigado! Mais um problema resolvido!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.