2011-12-20 8 views
0

私はこれがうまくいかないと思っていましたが、そうではありませんでしたが、私はどこでも同様の質問を見つけることはできません。私はif elseステートメントを使ってログインできなかったかどうかをチェックして理由(エラー)を表示し、もしあればエコーされ、そうでなければ$ _SESSIONにはユーザーIDが割り当てられます事前に開始されています)。これは、mySQL dbを照会する関数に相当する変数から取り出されたものです。彼らができる場合(むしろそれ自身の右にあるページというより)ホームページ上のドロップダウンメニューにあるURLにリダイレクトしてPHPでエラーを表示しますか?

if (!empty($errors)) { 
    foreach ($errors as $error) { 
     echo $error . '<br />'; . 
    } 
} else { 
    $_SESSION['user_id'] = $login; 
    header('Location: you/default.php'); 
    exit(); 
} 

問題は、このログインフォームで、かつ:ページがように、アカウントページにリダイレクトします私はlogin.phpページにリダイレクトしてエラーを表示したいので、foreachステートメントの前にheader('Location: login.php');を追加しようとしましたが、login.phpにリダイレクトされましたが、私が期待したように、エラーをそれに伴ってもたらさなかった。

私はこれがAJAXやPHP以外のアイデアの仕事かもしれないと思っていますか?

答えて

0

にこれらをチェックする必要があります。私の場合、エラー(if (!empty($errors)))があった場合、$_SESSION['errors']として$_SESSIONスーパーグローバルに適用しました。

それから、そこにそれらのエコーかの簡単な声明login.phpにページをリダイレクトします。

if (isset($_SESSION['lqerrors'])) { 
    $lqerrors = $_SESSION['lqerrors']; 
     foreach ($lqerrors as $lqerror) { 
      echo $lqerror, '<br />'; 
     } 
    unset($lqerrors,$lqerror,$_SESSION['lqerrors']); 
} 

簡単!

0

変数を追加する前にセッションを開始する必要があります。また、このコードの前に何も出力されていないことを確認してください。

if (!empty($errors)) { 
    foreach ($errors as $error) { 
     echo $error . '<br />'; // notice i've replaced the comma in your code with a colon. 
    } 
} else { 
    session_start(); 
    $_SESSION['user_id'] = $login; 
    header('Location: you/default.php'); 
    exit(); 
} 

http://ca3.php.net/manual/en/session.security.php http://ca3.php.net/manual/en/function.session-start.phpまた

、セッションにアクセスする必要のある他のすべてのページで、あなたsession_start()を呼び出す必要があります。何かを出力する前に。

+0

申し訳ありませんが、わかりにくい言葉は私の一部です。セッションは初期化ファイルのほうに早く開始されました。私は再度宣言する必要はないと言います。しかし、それでも私の問題は解決しません。 – ReactingToAngularVues

+0

それでは、正確には何が動作していませんか?それはちょうどリダイレクトされません、エラーをスロー? – SuitedSloth

+0

解析エラーが発生した場合は、$エラーと
の間のコンマを削除しますか?私はそれがここでのあなたの質問の入力ミスか、それがあなたのコードにもあるのかどうかはわかりません。 – SuitedSloth

0

エラーを新しいページに渡す必要があります。あなたが何か行うことができます:もちろん

header('Location: login.php?error[]="'.$error1.'"&error[]="'.$error2.'"); 

を、あなたはlogin.php :)私は実際にこれを自分で行う方法を考え出し

関連する問題