0

Web サイトのログインフォームと登録フォームを作成しました。

フォームは検証のために checklogin.php および checksign.php に投稿されますが、エラーが見つかった場合は別のファイルに表示されます。

ログインする

以下は、次の検証ステートメントのエラー メッセージです。

 if (!$_POST['fullname'] | !$_POST['myusername'] | !$_POST['mypassword'] | !$_POST['remypassword']) {

        die('You did not complete all of the required fields');
    }

エラー

私の質問は、どうすればそれらを同じページに表示できますか? 例えば; フォームの横のラベルに。ありがとう、どんなヒントでも大いに役立つでしょう。これは自動販売を行っているウェブサイトです

4

3 に答える 3

2

検証の順序が最終処理の前に来るようにコードを構造化し、そうでない場合はフォーム ページを再度表示します。

if($_SERVER['REQUEST_METHOD'] === 'POST')
{
  $valid = false;
  // perform input validations here
  if(dosomething())
  {
    $valid = true;
  }

  // if valid, perform processing here, and either show success page (or redirect)
  if($valid === true)
  {
    // SQL junk here
    include('success.php');
    exit();
  }
}

// render original form after this line
于 2012-04-11T03:09:57.170 に答える
0

フォームは、index.phpにデータを投稿するのではなく、checklogin.phpにデータを投稿し、そのページで検証を処理します。

<form class="clearfix" action="checklogin.php" method="post">
于 2012-04-11T03:06:39.260 に答える
0

以前は、セッションを使用してエラーを格納するカスタムエラーハンドラーを使用していましたが、それをお勧めします。

(カスタムエラーハンドラ内で)セッションを使用してエラーを格納することの利点は、任意のビューページでエラーを簡単に読み取って表示できることです。たとえば、クラスでエラーをスローしたい場合は、セッションに保存されたら、いつでもエラーを表示できます。したがって、この特定の問題については、すべてのコードを1つのphpファイルに移動するだけで済みますが、おそらく最善の解決策ではありません。

言うまでもなく、「ログインの確認」がログインページにリダイレクトされた場合、明らかにすべての変数の値が保持されるわけではありません。

于 2012-04-11T03:07:38.360 に答える