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? -->
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