2016-07-30 6 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は、ページの後に取得しようとすると空になりますリフレッシュされました。

あなたがする必要があるのは、$ auth-> feedback_negativesメンバ変数にSESSION配列/変数を格納し、アクセッサとミューテータを使用してセッション配列にエラーメッセージがあり、実際にそれを取得してログインに表示するかどうかを確認することですページ。ありがとう

+0

セッションベースのフラッシュメッセージをありがとうございます。これはちょうど必要なものです!でも、私はいくつかの問題を抱えている: 、PHPファイルを必要とするセッションを開始し、その後 場合($ msg-> hasErrorsを()){ //があるエラー }他に試した後{ が//あります。ていない任意のエラー } お知らせ:/ varにヌルの(メンバ関数のhasErrorsに呼び出し):ライン上の/var/www/html/newlogin/index.phpでMSG 10 致命的なエラー:未定義の変数不明なエラー/www/html/newlogin/index.php:10スタックトレース:10行目の/var/www/html/newlogin/index.phpにスローされた#0 {main} ここで明らかにsomethigが不足しているような気がする –

+0

はい、含まれていませんindex.phpのファイル '/path/to/FlashMessages.php'が必要です。 $ msg = new \ Plasticbrain \ FlashMessages \ FlashMessages(); –

+0

それは私が行方不明だった!ありがとうございました。私のクラスでは、 '$ msg-> error( 'Failed。');というエラーを呼び出すことができますか、それとも他のものを含める必要がありますか? –

0

あなたが$auth存在をチェックをしていると、それがない場合$auth->feedback_negativesは常にあなたは空の配列に対するforeachを行うよう

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

ありがとう!私はあなたの2番目のスニペットを使用し、else {echo "None。";}を追加しました - フォームに間違った情報を入れるたびに、 "None"と表示されます。エラーアレイ。 $ this-> feedback_negatives [] = "ログインに失敗しました。私の認証クラスで使用するには正しいですか? –

+0

これはすべて1つのスクリプトで起こっているのですか?クラスが2つの別々のスクリプトにまたがってその内容を維持すると仮定していますか? – RiggsFolly

+0

ログインページは$ auth-> loginを使用して入力をauthクラスに送ります。 –

関連する問題