2014-12-12 4 views
4

Мне нужно отобразить сообщение уведомления после перенаправления заголовка. я страница-перенаправление с помощью этой функции:php лучший способ показать уведомление после перенаправления

function Redirect($url) { 
if(!headers_sent()) { 
    //If headers not sent yet... then do php redirect 
    header('Location: '.$url); 
    exit; 
} else { 
    //If headers are sent... do javascript redirect... if javascript disabled, do html redirect. 
    echo '<script type="text/javascript">'; 
    echo 'window.location.href="'.$url.'";'; 
    echo '</script>'; 
    echo '<noscript>'; 
    echo '<meta http-equiv="refresh" content="0;url='.$url.'" />'; 
    echo '</noscript>'; 
    exit; 
} 
    } 

Я вставить ошибку в PHP SESSION так:

session_start(); 
$_SESSION['errors'] = array(); 

... 

array_push($_SESSION['errors'], "<span style = 'color:green;'>Success!</span>"); 
Redirect("somepage.php"); // OR header("Location: somepage.php"); 

И для уведомления дисплея:

if(isset($_SESSION['errors']) && count($_SESSION['errors']) > 0) { 
    foreach($_SESSION['errors'] as $k => $v) 
     echo($v . "<br/>"); 
    unset($_SESSION['errors']); 
} 

уведомления Put в SESSION безопасен и хорошо путь? если нет, то лучший способ показать уведомление после перенаправления заголовка?!

+2

Те известны как "Flash Messages", и да, ваш подход является правильным. См. Также http://mikeeverhart.net/php/session-based-flash-messages/. – SirDarius

ответ

0

Да, это хороший способ. Вам нужно что-то, что может сохранить данные через запросы. В php у нас есть cookie и session. Cookie это плохая идея для этого, сессия хорошая. Вы можете сделать класс для этого, и показывать уведомления, как это:

if ($oNotification->hasNotification('key')) 
{ 
$oNotification->showNotification('key'); 
} 

Например, в Yii Framework в пользователя модуля существует «мигает» Работа с сессиями

+0

И затем, когда отображается, удалите сообщение из сеанса. – Machiel

+0

точно =) В примере он сделал это. –

1

Я написал библиотеку только для этого типа проекты https://github.com/tamtamchik/simple-flash.

После того, как вы его установки вы можете сделать это:

// put message not session 
flash('Some error message', 'error'); 

// print it after redirect 
echo flash()->display(); 

Это будет генерировать Bootstrap дружественные предупреждающие сообщения.

Example

Смежные вопросы