-1

データベースのユーザー名とパスワードを検証するログイン ページがありますが、無効なユーザー名とパスワードのメッセージをページの上部ではなく入力フィールドの上に表示したいと考えています。php コードを編集して div に配置して、それを表示することができることはわかっています。ヘッダーを配置すると、ページの上部から php を移動するとすぐにエラー メッセージが生成されます。これに代わるものはありますか?または、ヘッダーを別の方法で使用する方法はありますか? 私たちのコードは以下にあり、私たちが望むもののイメージです...

ここに画像の説明を入力

<?php
        error_reporting (E_ALL ^ E_NOTICE);
        $username = $_POST['usrname'];
        $pass_word = $_POST['pass_word'];
        if(($usrname=="")&&($pass_word==""))
        {
            //Do nothing as nothing has been posted......
        }
        else
        {
            $con = mysql_connect("localhost"," "," ");
            if (!$con)
            {
                die('Could not connect: ' . mysql_error());
            }
            mysql_select_db("", $con);

            $result = mysql_query("SELECT * FROM `leicester_login` WHERE `user_name`='$username'", $con);
            $num_row = mysql_num_rows($result);
        }

        if($username=="")
        {
            //do nothing as nothing has been posted
        }
        else
        {
            if($num_row == 0)
            {
            echo "<p>The username <b>". $username ."</b> doesnt exist!</p>";
            }
            else
            {
                $return_pass = mysql_fetch_array($result);
                if($pass_word == $return_pass['pass_word'])
                {
                    session_start();
                    if(isset($_SESSION['username']))
                    {
                        //do nothing as session already exists...
                        header("Location:  ");
                    }
                    else
                    {
                        $_SESSION['username']= $username;
                        header("Location:  ");
                        exit;
                    }
                }
                else
                {
                    echo "<p>The password entered is incorrect!</p>";
                }
            }
        }
    ?>


    <html lang="en">
      <head>
      </head>

      <body>

        <div class="container">

    <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" class="form-signin">
        <h2 class="form-signin-heading"><img src="" alt="Logo"/>Leicester</h2>
        <?php

    ?>
        <h6 class="form-signin-heading">You are not logged in, please login.</h6>

            <input name="usrname" id="usrname" type="text" class="input-block-level" placeholder="Username">
            <input type="password" name="pass_word" id="pass_word" class="input-block-level" placeholder="Password">
        <center><button align="center" class="btn btn-large btn-primary" type="submit">Sign in</button></center>
    <a href="shires.php" class="btn btn-link">< Go Back</a>
          </form>
      </div> <!-- /container -->

      </body>
    </html>
4

4 に答える 4

1

あなたのifステートメントは間違っています [$usrnameあなたのコードにはそのような変数はありません]

if(($usrname=="")&&($pass_word==""))

する必要があります

if(($username=="")&&($pass_word==""))
于 2013-11-06T15:30:32.007 に答える
0

これを試して:

<?php
    error_reporting (E_ALL ^ E_NOTICE);
    $username = $_POST['usrname'];
    $pass_word = $_POST['pass_word'];
    if(($usrname=="")&&($pass_word==""))
    {
        //Do nothing as nothing has been posted......
    }
    else
    {
        $con = mysql_connect("localhost"," "," ");
        if (!$con)
        {
            die('Could not connect: ' . mysql_error());
        }
        mysql_select_db("", $con);

        $result = mysql_query("SELECT * FROM `leicester_login` WHERE `user_name`='$username'", $con);
        $num_row = mysql_num_rows($result);
    }

    if($username=="")
    {
        //do nothing as nothing has been posted
    }
    else
    {
       $message = null; //create a container for the messages

        if($num_row == 0)
        {
        $message = "<p>The username <b>". $username ."</b> doesnt exist!</p>";
        }
        else
        {
            $return_pass = mysql_fetch_array($result);
            if($pass_word == $return_pass['pass_word'])
            {
                session_start();
                if(isset($_SESSION['username']))
                {
                    //do nothing as session already exists...
                    header("Location:  ");
                }
                else
                {
                    $_SESSION['username']= $username;
                    header("Location:  ");
                    exit;
                }
            }
            else
            {
                $message = "<p>The password entered is incorrect!</p>";
            }
        }
    }
?>


<html lang="en">
  <head>
  </head>

  <body>

    <div class="container">

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" class="form-signin">
    <h2 class="form-signin-heading"><img src="" alt="Logo"/>Leicester</h2>
    <?php

     //if there's something in the container, echo it out.

     if (!is_null($message)) {
      echo $message;
     }
?>
    <h6 class="form-signin-heading">You are not logged in, please login.</h6>

        <input name="usrname" id="usrname" type="text" class="input-block-level" placeholder="Username">
        <input type="password" name="pass_word" id="pass_word" class="input-block-level" placeholder="Password">
    <center><button align="center" class="btn btn-large btn-primary" type="submit">Sign in</button></center>
<a href="shires.php" class="btn btn-link">< Go Back</a>
      </form>
  </div> <!-- /container -->

  </body>
</html>

echo が呼び出されるたびに、何かがすぐに出力されます。それが出力の前にある場合 (html 部分など)、HTML が開始する前に表示されます。何かをコンテナー ( など$message) に入れて html で出力すると、所定の場所に表示されます。副作用として、 はheader("Location: ");ヘッダーが既に送信されたエラーをスローしません。

于 2013-11-06T15:43:43.043 に答える
-1

HTMLの実際の開始前に、出力するように指示しているため、一番上に出力しています。これを解決する 1 つの方法は、表示する文字列を変数に保存し、その変数を HTML の適切な場所に表示することです。

于 2013-11-06T15:40:27.460 に答える