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

  • Автор темы Автор темы Etwas
  • Дата начала Дата начала

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 нет.

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

Можно так.
 
не получается.

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 не перезапишится.
 
Ты три сессионную переменную сразу после вывода. Это же логично.
 
Да, точно... Надо чаще отдыхать.
Кром, спасибо!
Только там после header нужно еще exit поставить.
 
Сверху