6

ユーザー名とパスワードを要求する次のログイン フォーム (login.php) があります。

<form action="processlogin.php" method="post">            
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="Login">                                
</form>

以下は、私の processlogin.php ファイルからのコード スニペットです。

if(!$_POST["username"] || !$_POST["password"])
{
    $msg = "You left one or more of the required fields.";
    echo $msg;
    //header("Location:http://localhost/login.php");
}

このコードは、すべての必須フィールドが入力されているかどうかをチェックします。そうでない場合は、エラー メッセージが表示されます。

今まではすべて順調です。

私の問題は、エラーメッセージが真っ白なページに表示されることです。login.php ファイルのログインフォームの上に表示したいと思います。機能を利用するには、コードをどのように変更すればよいですか。

4

8 に答える 8

3
header("Location:http://localhost/login.php?x=1")

login.php で

if(isset($_GET('x'))){
//your html for error message
}
于 2013-11-01T07:03:26.040 に答える
1
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(!$_POST["username"] || !$_POST["password"])
{
    $msg = "You left one or more of the required fields.";
    echo $msg;
    //header("Location:http://localhost/login.php");
}
}
?>
<form action="<?php echo $PHP_SELF;?>" method="post">            
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="Login">                                
</form>
于 2013-11-01T07:09:24.990 に答える
1

フォームの上のテーブルまたはスパンにメッセージを表示できます。

    <span>
    <?php if(isset($_REQUEST[$msg]))
    echo $msg;
    ?>
    </span>
    <form>
    </form>

また、フォームのアクション ページで $msg をエコーし​​ないでください。

于 2013-11-01T07:01:19.443 に答える
1

login.phpフォームを表示し、送信された場合はそのデータを検証するために、1 つのページ (あなたの ) のみを使用してください。したがって、 $_SESSION 変数は必要ありません。すべてが 1 つの同じファイルにまとめられています。

<?php

$msg = null;

if(isset($_GET['send'])) {
    if(!$_POST["username"] || !$_POST["password"]){
        $msg = "You left one or more of the required fields.";

        //header("Location:http://localhost/login.php");
    }
}

?>

<?php echo ($msg !== null)?'<p>ERROR: ' . $msg . '</p>':null; ?>

<form action="?send" method="post">            
  <input type="text" name="username">
  <input type="password" name="password">
  <input type="submit" value="Login">                                
</form>
于 2013-11-01T07:01:46.213 に答える
1

これを試して:

html:

<form action="processlogin.php" method="post">            
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="Login"> 
<span>
 <?php if(isset($_GET['msg']))
  echo $_GET['msg'];
  ?>
</span>                               
</form>

php:

if(!$_POST["username"] || !$_POST["password"])
{
$msg = "You left one or more of the required fields.";
header("Location:http://localhost/login.php?msg=$msg");
}
于 2013-11-01T07:03:36.097 に答える