2009-10-22 3 views
2
<? 
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? --> 
+1

Просьба уточнить ваш вопрос. Какой cookie установлен, и почему вы этого не ожидаете? –

+0

В чем разница: возвращение, смерть и выход? –

+0

@Delirium tremens: Нет никакой разницы. Документы для die даже говорят 'die - Equivalent to exit()' – Powerlord

ответ

10

Выполнение сценария продолжается после установки заголовка Location: (или любого другого вызова header(), если на то пошло). Если вы хотите, чтобы перенаправление произошло немедленно, без остальной части исполняемого скрипта, return; или die; сразу после звонка header().

+0

+1 И я также установил бы cookie перед отправкой заголовка перенаправления. – rmontagud

2

Куки-файлы отправляются как часть заголовка. Весь заголовок оценивается (включая настройку файла cookie), а затем перенаправляет браузер.

0

У вас отключена отчетность об ошибках, которая поможет вам с ошибкой синтаксиса и всегда стоит делать в среде dev.

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

EDIT: была ошибка синтаксиса с двойной точкой с запятой, но это, кажется, было исправлено

вы также должны вызвать exit() после вашего заголовка или выполнения сценария не остановятся, и печенье будет быть Сет

2

Попробуйте это:

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

страницы (включая ваши заголовки) только отправляется после того, как «все» ваш PHP выполняется (не, если вы т остановить его с помощью die() или exit());

Смежные вопросы