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? -->
È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top