2016-07-30 2 views
1

У меня возникла проблема с отображением ошибок в моей форме входа.Отображение сообщений пользователям через класс

Мой класс называется «Class.auth.php» и Войти работает отлично, как делает функцию, чтобы направлять пользователей обратно, если они не вошли в

В моем файле класса Auth у меня есть:.

А потом на меня следующее, ибо, если не удается Войти:

$this->feedback_negatives[] = "Login failed."; 

затем это показано на странице по:

if (isset($auth)) { 

    if ($auth->feedback_negatives) { 
      foreach ($auth->feedback_negatives as $feedback_negative){ 
        echo $feedback_negative; 
       } 
     } 
} 

Это, похоже, не работает. Я понятия не имею, что я делаю неправильно. Раньше я использовал $ _SESSION для хранения сообщений об ошибках (как здесь было рекомендовано несколько ответов), но это кажется более чистым. Любая помощь приветствуется.

+0

делает $ auth-> feedback_negatives содержит массив сеансов? –

+0

Нет, обратная связь Auth просто содержит сообщение обратной связи. Хотя кажется, что это либо не устанавливается, либо ретранслируется обратно на страницу входа в систему. –

ответ

0

Если вы хотите придерживаться более объектно ориентированным способом, вот хороший класс, который вы можете использовать, который держит флеш сообщения для следующего запроса ,

Session-based Flash Messages class for PHP

Таким образом, вы действительно не нужно изобретать колесо.

Что касается вашего случая ($ auth-> feedback_negatives) при перенаправлении после неудачной попытки входа в систему, объект auth будет уничтожен из памяти, поэтому ваши $ auth-> feedback_negatives будут пустыми, когда вы попытаетесь получить их после того, как страница был обновлен.

Итак, вам нужно сохранить массив/переменную SESSION в переменной-члене $ auth-> feedback_negatives и использовать accessor и mutator, чтобы проверить, есть ли сообщения об ошибках в массиве сеансов, чтобы действительно получить и показать их для входа в систему стр. Спасибо

+0

Благодарим вас за флэш-сообщения на основе сеанса. Это то, что нужно!У меня возникли некоторые проблемы, хотя: После требует файл PHP, начиная сеанс, а затем пытается если ($ msg-> hasErrors()) {// Есть ошибки } еще { // Есть НЕ любые ошибки } Примечание: Undefined переменной: тзд в /var/www/html/newlogin/index.php на линии 10 Фатальная ошибка: Uncaught Ошибка: Вызов функции-члена hasErrors() на нуль в/вар /www/html/newlogin/index.php:10 Трассировка стека: # 0 {main} брошен в /var/www/html/newlogin/index.php в строке 10 Мне кажется, что я не вижу здесь очевидного –

+0

Да, вы пропустите, чтобы включить файл в index.php требует '/path/to/FlashMessages.php'; $ msg = new \ Plasticbrain \ FlashMessages \ FlashMessages(); –

+0

Вот что мне не хватало! Спасибо. Поэтому в моем классе я могу просто вызвать ошибку '$ msg-> error ('Failed.');' Или мне нужно включить другие вещи? –

0

Как вы проверяете для $auth существования, и если он делает $auth->feedback_negatives будет существовать всегда можно упростить этот код

if (isset($auth)) { 
    foreach ($auth->feedback_negatives as $feedback_negative){ 
     echo $feedback_negative; 
    } 
} 

, как делать Еогеасп над пустым массивом вполне законным, оно как раз не производят никакой продукции ,

В качестве альтернативы, проверить массив, делая счет как этот

if (isset($auth)) { 
    if (count($auth->feedback_negatives) > 0) { 
     foreach ($auth->feedback_negatives as $feedback_negative){ 
      echo $feedback_negative; 
     } 
    } 
} 
+0

Спасибо! Я использовал ваш второй фрагмент и добавил else {echo «None.»;} - каждый раз, когда я помещаю неправильную информацию в форму, я получаю «None», что означает, что что-то в проверке не работает, чтобы установить или ретранслировать массив ошибок. Это $ this-> feedback_negatives [] = "Login failed."; правильно использовать в моем классе auth? –

+0

Это все происходит в одном скрипте, или вы считаете, что класс будет поддерживать его содержимое через 2 отдельных сценария. – RiggsFolly

+0

Страница входа отправляет вход в класс auth с использованием $ auth-> login, так что это тот же класс, но разные функции. –

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