заголовок игнорируется - PullRequest
2 голосов
/ 23 октября 2009
<?
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? -->

Ответы [ 4 ]

10 голосов
/ 23 октября 2009

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

2 голосов
/ 23 октября 2009

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

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

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

2 голосов
/ 23 октября 2009

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

0 голосов
/ 23 октября 2009

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

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

РЕДАКТИРОВАТЬ: произошла синтаксическая ошибка с двойной точкой с запятой, но, похоже, она была исправлена ​​

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...