Pergunta

<?
session_start();
$id = $_SESSION['id'];
$email = $_COOKIE['email'];
$password = $_COOKIE['password'];
header('Location: ../');
// I tell it to redirect...
$cookie_expires = time() + 60*60*24;
$cookie_path = '/';
$cookie_name = 'temporary';
$cookie_value = 'Your account was deleted.';
setcookie($cookie_name, $cookie_value, $cookie_expires, $cookie_path);
// ...but the cookie is set!
?>
<!-- Why? -->
Foi útil?

Solução

A execução do script continua depois de definir um cabeçalho Location: (ou qualquer outra chamada para header(), para que o assunto). Se quiser que o redirecionamento para acontecer imediatamente, sem o resto do script de execução, return; ou die; imediatamente após chamar header().

Outras dicas

Os cookies são enviados como parte do cabeçalho. Todo o cabeçalho é avaliada (inclusive definindo o cookie), então o redireciona o navegador.

Tente isto:

header('Location: ../');
exit();

A página (incluindo os cabeçalhos) só é enviada após 'all' seu php é executado (a menos que você diga a ele para parar com die () ou saída ());

tem você tem o relatório de erros desligado, que iria ajudá-lo com o erro de sintaxe e é sempre vale a pena fazer em um ambiente dev.

ini_set('display_errors',1);
error_reporting(E_ALL & ~E_NOTICE);

EDIT: houve um erro de sintaxe com um ponto e vírgula duplo, mas que parece ter sido corrigido

Você também precisa exit() chamada após o cabeçalho ou a execução do script não vai parar e o cookie será sete

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top