0

PHP では、別のファイルに保持されているスクリプトを使用して、フォームを処理して検証したいと考えています。エラーがある場合は、フォームにエラーと元の値を表示して、ユーザーが変更できるようにします。現時点では、検証スクリプトはフォームと同じページにあり、すべて正常に動作します。ただし、これをフォームから離して、フォーム内の「アクション」を使用してフォーム変数をスクリプトに送信したいと思います。ただし、これを行った場合、エラー メッセージと元の値を含むフォームに戻るにはどうすればよいでしょうか?スクリプトとヘッダーの場所で $_POST を使用するだけでよいでしょうか? またはより良い方法があります。フォームが正常に検証された場合は、別のページに移動します (ヘッダーを使用)。

私が達成しようとしているプロセス/ロジックと、ページ間の過去の変数への関数を理解するのを手伝ってくれる人はいますか ($_GET?)

4

2 に答える 2

0

あなたが探しているのは、Model-View-Controller (MVC) と呼ばれるフレームワークだと思います。あなたの場合、フォームは「ビュー」であり、データを処理するスクリプトは「コントローラー」であり、コントローラーには、エラーメッセージを含むフォームまたは成功メッセージを含む他のページであるユーザー (ビュー) に表示するオプションがあります。しかし、MVC はそれよりも少し複雑です。MVC を勉強したい場合は、いくつかの記事を読んで、CakePHP、CodeIgniter、Zend フレームワークなどの使用する MVC フレームワークを選択してください。

PHP の基礎を勉強している場合は、フレームワークを使い始めたくないかもしれません。その場合は、次のようにすることができます (ログイン サンプル)。

login.php

<?php
    $error = "";
    $username = "";
    $password = "";

    //POST method used. The user is trying to login
    if(isset($_POST))
    {
        $username = $_POST["username"];
        $password = $_POST["password"];

        //process login here
        //check database
        if($success == true)
        {
            header( 'Location: home.php' ) ;
        }
        else
        {
            include "login-view.php";
            $error = "Either username or password is incorrect.";
        }
    }
    else //GET method used. The user visits the login page
    {
        include "login-view.php";
    }
?>

login-view.php

<p><?php echo $error; ?></p>
<form method="post" action="login.php">
     <input type="text" name="username" value="<?php echo $username ?>" />
     <input type="password" name="password" />
     <input type="submit" value="send" />        
</form>

上記のコードは次のようになります。

1) ユーザーがログインページにアクセスします。login.php は、使用されているメソッドが GET であることを検出します。つまり、リンクをクリックするか、ブックマークを開くか、アドレス バーに URL を入力します。login.php には、フォームを含む login-view が含まれます。

2) ユーザーは自分のユーザー名とパスワードを入力し、送信ボタンをクリックします。login.php はリクエストが POST であることを検出し、ユーザー名とパスワードを検証し、必要に応じてエラー メッセージを表示します。有効な場合はホームページにリダイレクトし、そうでない場合は login-view.php (フォーム) を含めます。今回はエラー メッセージと以前に入力したユーザー名を含めます。

于 2012-09-15T07:14:44.983 に答える
0

複数のページにわたって変数を追跡したい場合は、セッションを調査することが適切な場合があります。$_GET または $_POST から変数をセッションに割り当てることができ、それらはページ間でアクセスできます。

于 2012-09-15T07:09:22.160 に答える