NikroVir
Извращённый отшельник
- Регистрация
- 27 Апр 2008
- Сообщения
- 347
- Реакции
- 118
- Автор темы
- #1
Доброго времени суток, дамы и господа.
Я новичок в программировании на php, в связи с чем прошу яйцами не закидывать.
Есть не сложный код (постарался ещё больше упростить и вырезать некоторые моменты) :
Как видно из кода, мы запускаем сессию, если по гет-запросу получена тройка, то функция messages_handler() записывает в $_SESSION['message_handler'] сообщение что всё ок и редиректит на эту же страницу. Здесь функция check_message() видит, что $_SESSION['message_handler'] определена и выводит её, а после чего и очищает (чтобы при обновлении страницы сообщение больше не показывалось).
И всё бы хорошо, но код не работает, если проводить очистку. Т.е. без строки
всё работает замечательно, но сообщение будет показываться постоянно, что меня не устраивает.
Как сделать так, чтобы и вывести сообщение и очистить $_SESSION['message_handler']?
Великие гуру, помогите. Я уже всю голову сломал!
Видел похожие проблемы на других форумах, но дельных советов не нашёл.
Я новичок в программировании на php, в связи с чем прошу яйцами не закидывать.
Есть не сложный код (постарался ещё больше упростить и вырезать некоторые моменты) :
PHP:
session_start();
function messages_handler($msg_type){
switch ($msg_type) {
case 'notification':
$_SESSION['message_handler'] = "Всё ок, бро";
header('Location: '.$_SERVER['PHP_SELF']);
break;
}
}
function check_message(){
if (isset($_SESSION['message_handler'])) {
echo $_SESSION['message_handler'];
unset($_SESSION['message_handler']);
}
}
if ($_GET['do'] == '3') {
messages_handler('notification');
}
check_message();
Как видно из кода, мы запускаем сессию, если по гет-запросу получена тройка, то функция messages_handler() записывает в $_SESSION['message_handler'] сообщение что всё ок и редиректит на эту же страницу. Здесь функция check_message() видит, что $_SESSION['message_handler'] определена и выводит её, а после чего и очищает (чтобы при обновлении страницы сообщение больше не показывалось).
И всё бы хорошо, но код не работает, если проводить очистку. Т.е. без строки
PHP:
unset($_SESSION['message_handler']);
Как сделать так, чтобы и вывести сообщение и очистить $_SESSION['message_handler']?
Великие гуру, помогите. Я уже всю голову сломал!
Видел похожие проблемы на других форумах, но дельных советов не нашёл.
Последнее редактирование: