Передача данных после Header ("Location: ");

proWoke

Новичок
Здравствуйте. Вот есть такой код:
PHP:
<?
$pathtoserver = getenv ("DOCUMENT_ROOT");
include ("$pathtoserver/deluxe-window/lib/connectdb.php");
$query = mysql_query ("SELECT * FROM `adminpass` ") or die ("Error: ".mysql_error());
for ($data = array(); $row=mysql_fetch_assoc($query); $data[]=$row);

if (isset($_POST['submit']))
{
$query = mysql_query ("SELECT * FROM `adminpass` ");
$login = $_POST['login'];
$oldpassword = md5($_POST['oldpassword']."abra5");
$repassword = md5($_POST['repassword']."abra5");

	if ($oldpassword == $data['0']['password'])
	{
	mysql_query ("UPDATE `adminpass` SET login='$login', password='$repassword'") or die ("Mysql error ".mysql_error());
	$error = "Пароль успешно изменён.";
	header ("Location: script.php");
	}
	else
	{
	$error = "Старый пароль не совпадает.";
        header ("Location: script.php");
	}
}
include ("index.php");
?>
Вот как мне передать переменную $error после перенаправления? Потом эта переменная в Div вставляется. Можно конечно GET, но у меня какая то ерунда получается, я пишу header ("Location: script.php?$error"); А это глупость, конечно. Вот такой вот вопрос.
 

Духовность™

Продвинутый новичок
вставляешь в базу сообщение и делаешь Location: /url?notif=ID , где ID - идентификатор сообщения, вставленного в базу. При открытии страницы url смотришь, есть ли переменная notif. Если есть, достаешь ёё, показываешь, и сразу же удаляешь из базы.
 

proWoke

Новичок
И про базу я думал, но меня остановило то, что не глупо ли ради пары сообщений делать таблицу в базе? Или это нормально практика?
 

Духовность™

Продвинутый новичок
И про базу я думал, но меня остановило то, что не глупо ли ради пары сообщений делать таблицу в базе?
Глупо так думать. Перестань мыслить в стиле "ах нежная база данных, не надо её трогать".

И потом, почему "пары сообщений"? Я вот у себя на adverts.ru на любой чих пользователя делаю уведомления. Попробуй на странице http://www.adverts.ru/getpassword/ введи логин 1111 и получишь такой вот нотификейшен.

На портале superjob.ru так же сделано. Правда там вроде по кукам ID передается, но я всегда делаю через GET['id']. И скажу, это очень удобно.
 

prolis

Новичок
PHP:
header ("Location: script.php?result=success");
header ("Location: script.php?result=passerror");
 

proWoke

Новичок
Глупо так думать. Перестань мыслить в стиле "ах нежная база данных, не надо её трогать".

И потом, почему "пары сообщений"? Я вот у себя на adverts.ru на любой чих пользователя делаю уведомления. Попробуй на странице http://www.adverts.ru/getpassword/ введи логин 1111 и получишь такой вот нотификейшен.

На портале superjob.ru так же сделано. Правда там вроде по кукам ID передается, но я всегда делаю через GET['id']. И скажу, это очень удобно.
Понял. Спасибо, но я наверное в этот раз через сессию сделаю.
 

Духовность™

Продвинутый новичок
PHP:
header ("Location: script.php?result=success");
header ("Location: script.php?result=passerror");
1. абсолютно не красиво
2. Нельзя таким образом показывать _уникальные_ текста, например, уведомить, что пользователь по имени Вася успешно отредактирован. А моим способом можно это сделать:
PHP:
$redirect = new Base_Redirect();
$redirect->setMessage('Пользователь {user_name} сохранен');
$redirect->addParam('user_name', $user_name );
$redirect->setRedirectUrl('/admin/user/');
$redirect->run();
 

Духовность™

Продвинутый новичок
+ выгода от базы заключается в том, что сообщение там будет храниться ровно до тех пор, пока пользователь не откроет данный ему URL. А это может быть ссылка из письма, которую пользователь может открыть и через день и через год. Сессия к тому времени уже тю-тю сборкой мусора.
 

Gas

может по одной?
triumvirat
в zend,symfony,kohana,yii - такие сообщения (FlashMessages) ложатся в сессию, при следующем запросе удаляются. это какбы намекает о best practices.
 

Духовность™

Продвинутый новичок
triumvirat
в zend,symfony,kohana,yii - такие сообщения (FlashMessages) ложатся в сессию, при следующем запросе удаляются. это какбы намекает о best practices.
мне какбы пох на zend,symfony,kohana,yii. Я не вижу причин, по которым эти FlashMessages нельзя хранить в базе. Плюсы от базы я описал.
 

shureen

Милорд Лось Кристофер
Для таких единовременных сообщений как ошибки заполнения формы например (как у топикстартера) сессии вполне достаточно, а если брать пример ссылки из письма, то да само собой целесообразнее базу использовать
 
Сверху