Domanda
<?
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? -->
Soluzione
L'esecuzione dello script continua dopo aver impostato un'intestazione Location:
(o qualsiasi altra chiamata a header ()
, per quella materia). Se vuoi che il reindirizzamento avvenga immediatamente, senza che il resto dello script sia in esecuzione, return;
o die;
immediatamente dopo aver chiamato header ()
.
Altri suggerimenti
I cookie vengono inviati come parte dell'intestazione. Viene valutata l'intera intestazione (inclusa l'impostazione del cookie), quindi il browser reindirizza.
Prova questo:
header('Location: ../');
exit();
La pagina (comprese le intestazioni) viene inviata solo dopo l'esecuzione di "all" il tuo php (a meno che tu non gli dica di interrompere con die () o exit ());
hai disattivato la segnalazione degli errori, questo ti aiuterebbe con l'errore di sintassi e vale sempre la pena farlo in un ambiente di sviluppo.
ini_set('display_errors',1);
error_reporting(E_ALL & ~E_NOTICE);
EDIT: si è verificato un errore di sintassi con un doppio punto e virgola ma sembra che sia stato corretto
devi anche chiamare exit ()
dopo che la tua intestazione o l'esecuzione dello script non si fermeranno e il cookie sarà sete