2016-07-30 67 views
1

我在登錄表單上顯示錯誤時遇到問題。通過類向用戶顯示消息

我班被稱爲「Class.auth.php」和登錄工作正常,一樣的功能,將用戶定向回來,如果他們還沒有登錄

在我的驗證類文件我有:

再後來我有以下的,因爲如果登錄失敗:

$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將爲空,當您嘗試在頁面被刷新。

因此,您需要做的是在$ auth-> feedback_negatives成員變量中存儲SESSION數組/變量,並使用accessor和mutator檢查會話數組中是否存在錯誤消息,以便實際獲取並顯示它以便登錄頁。謝謝

+0

感謝您提供基於會話的Flash消息。這正是需要的!我遇到了一些麻煩,但: 要求PHP文件,啓動一個會話,然後試圖 如果($ MSG-> hasErrors()){// 有錯誤 }其他{之後// 有NOT任何錯誤 } 注意:在/ var上的空調用一個成員函數hasErrors():未定義變量:MSG在/var/www/html/newlogin/index.php第10行 致命錯誤:未捕獲的錯誤/www/html/newlogin/index.php:10堆棧軌跡:#0 {main}在第10行拋出/var/www/html/newlogin/index.php 我覺得我錯過了這裏很明顯的一些暗示 –

+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; 
    } 
} 

爲做一個foreach對一個空數組是完全合法的,它只是不會產生任何輸出。

另外,通過做這樣

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

謝謝!我用你的第二個片段並添加了一個else {echo「None。」;} - 每次我在表單中輸入錯誤的信息時,都會顯示「無」,這意味着檢查中的某些內容無法設置或中繼錯誤數組。是$ this-> feedback_negatives [] =「登錄失敗。」;正確使用我的授權課程? –

+0

這一切是在一個腳本中發生的,還是假設這個班級將在兩個獨立的腳本中維護其內容 – RiggsFolly

+0

登錄頁面使用$ auth-> login將輸入發送到auth類,所以它是同一個班級但功能不同。 –

相關問題