あなたが探しているのは、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 (フォーム) を含めます。今回はエラー メッセージと以前に入力したユーザー名を含めます。