Правильный редирект

Etwas

Новичок
Правильный редирект

Привет! Кто подскажет, как правильно организовать такую вот схему:

У меня есть файл key_messages.php который проверяет уровень доступа пользователя и возможные дополнительные права на данные, и если все гуд, то инклудит в себя key_messages.inc.php.

В инковском файле:

PHP:
if (!empty($_GET['id'])) //здесь он проверяет, если есть id то выводит выбранный message
{
       if ($message = $params->getMessageName($id))
       {
              $country = $params->getCountryName($message['Country_ID']);
              ...
              $tpl->assign('arr_country', $country);
              ...
       }	
}
if (!empty($_POST['edit_message'])) //здесь выдает данные для редактирования
{
	$message = $params->getMessageName($_POST['del_id']);
	$tpl->assign('arr_message', $message);
	$tpl->assign('arr_country', $_SESSION['country']);
                ...	
}
if (!empty($_POST['update_message'])) //вот подошли к апдейту
{
	if ($arr_save_request = $db->query("
		UPDATE `key_messages` SET 
                                ...
	     "))
	{
		$tpl->assign('message_page', GOOD_UPDATE_MESSAGE);
header("Location: http://".$_SERVER['SERVER_NAME'].$_SERVER["PHP_SELF"]);
PHP:
	}else{
		$tpl->assign('message_page', BAD_UPDATE_MESSAGE);
	}
}
И вот тут загвостка, в шаблон message_page передается, но при редиректе соответственно они пропадают. Плюс у меня при нажатии кнопки save в форме, action равен key_message.php?id=идентификатору изменяемого message. Чтобы пользователь вернулся сюда же. Так вот, при редиректе в адресной строке стоит допустим http://site.ru/key_message.php?id=4 но страница стоит пустая, как будто id нет.

Вопрос такой, как при такой схеме сделать, чтобы после редиректа в шаблон все-таки передалось сообщение? Пихать их снова в сессию, ну а в самом конце выводить? А перед записью ее очищать? Или может есть какая другая идея?
 

Кром

Новичок
>Пихать их снова в сессию, ну а в самом конце выводить? А перед записью ее очищать?

Можно так.
 

Etwas

Новичок
не получается.

PHP:
$_SESSION['message_page'] = false;
$_SESSION['message_page'] = GOOD_UPDATE_MESSAGE;
header("Location: http://".$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]);
PHP:
if ($_SESSION['message_page']){
    $tpl->assign('message_page', $_SESSION['message_page']);
};
Он соответственно будет ее всегда держать, а мне бы хотелось, чтобы сообщение выводилось только после редиректа, а так получается, что на любой странице выводится, пока message_page не перезапишится.
 

Кром

Новичок
Ты три сессионную переменную сразу после вывода. Это же логично.
 

Etwas

Новичок
Да, точно... Надо чаще отдыхать.
Кром, спасибо!
Только там после header нужно еще exit поставить.
 
Сверху