-2

私はphpの初心者で、ログインページを作成しようとしています。

ステートメントが真の場合、ページをリダイレクトするにはどうすればよいですか?

iwth header("location: nextpage.php"); を試しました。しかし、それは機能しません

<html>
    <head>
        <title>Uploader</title>
    </head>
    <body>

        <form action="index.php" method="POST" enctype="application/x-www-form-urlencoded"> 
        <input id="login" class="username" type="text" name="username" autofocus placeholder="Username" maxlength="30"/>
        <input id="login" class="password" type="password" name="password" placeholder="Password" maxlength="15"/>
        <input id="login" class="submit" type="submit" value="Login" />
        <p>Last update <span id="lastupdate"><?php echo date('d-m-Y');?></span></p>

        <?php
        mysql_connect("localhost", "root","******") or die(mysql_error());
        mysql_select_db("login") or die(mysql_error());

        if(isset($_POST['username']) && isset($_POST['password'])){
            $db_user = mysql_query("SELECT username FROM login_tb");
            $db_pass = mysql_query("SELECT password FROM login_tb");
            $ctrl_user = mysql_result($db_user,0);
            $ctrl_pass = mysql_result($db_pass,0);

            $username = $_POST['username'];
            $password = $_POST['password'];
            echo $username . $password;

            if(($username || $password) == NULL){
                echo "you have entered wrong username or password! <br/> please contact site admin.";
            }else{
                if($username == $ctrl_user && $password == $ctrl_pass){
                header("location: ./nextpage.php");
                }
            }
        }
        ?>
    </body>
</html>

誰でも私を助けることができますか?ありがとう

4

3 に答える 3

1

ヘッダーは、データ転送の最初に表示されるものです。ヘッダーを送信しようとする前に、データ (ほとんどの Web ページ) を送信しています。

PHPコードをファイルの先頭に移動し、正しい場所にある別のphpブロックで「間違ったユーザー/パス」をエコーし​​ます

<?php
    mysql_connect("localhost", "root","******") or die(mysql_error());
    mysql_select_db("login") or die(mysql_error());

    if(isset($_POST['username']) && isset($_POST['password'])){
        $db_user = mysql_query("SELECT username FROM login_tb");
        $db_pass = mysql_query("SELECT password FROM login_tb");
        $ctrl_user = mysql_result($db_user,0);
        $ctrl_pass = mysql_result($db_pass,0);

        $username = $_POST['username'];
        $password = $_POST['password'];

        if(($username || $password) != NULL && $username == $ctrl_user && $password == $ctrl_pass){
            header("location: ./nextpage.php");
        }
    }
?>
<html>
    <head>
        <title>Uploader</title>
    </head>
    <body>

        <form action="index.php" method="POST" enctype="application/x-www-form-urlencoded"> 
        <input id="login" class="username" type="text" name="username" autofocus placeholder="Username" maxlength="30"/>
        <input id="login" class="password" type="password" name="password" placeholder="Password" maxlength="15"/>
        <input id="login" class="submit" type="submit" value="Login" />
        <p>Last update <span id="lastupdate"><?php echo date('d-m-Y');?></span></p>
        <?php
            echo $username . $password;
            if(($username || $password) == NULL){
                echo "you have entered wrong username or password! <br/> please contact site admin.";
            }
        ?>
    </body>
</html>
于 2012-04-29T12:11:01.000 に答える
1

ページをリダイレクトするには複数の方法がありますが、私は次のようにします。

<?php
header('Location: /blah.php');
die('<meta http-equiv="refresh" content="0; url=http:/blah.php" />\n
<p>Please visit <a href="/blah.php">Blah.php</a>.</p>');
?>

そうすれば、ヘッダーが失敗した場合にフォールバックできます。

また、SQL インジェクション/XSS を防ぐために、データ入力をサニタイズする必要があることを指摘させてください。ここ:

$user = htmlspecialchars(mysql_real_escape_string($_POST['user']));
于 2012-04-29T13:49:04.667 に答える
-1

出力バッファリングの問題のようです。使用ob_start()して、ob_end_fluh()

そして次の;

<? ob_start(); ?>
<html>
    <head>
        <title>Uploader</title>
    </head>
    <body>

        <form action="index.php" method="POST" enctype="application/x-www-form-urlencoded"> 
        <input id="login" class="username" type="text" name="username" autofocus placeholder="Username" maxlength="30"/>
        <input id="login" class="password" type="password" name="password" placeholder="Password" maxlength="15"/>
        <input id="login" class="submit" type="submit" value="Login" />
        <p>Last update <span id="lastupdate"><?php echo date('d-m-Y');?></span></p>

        <?php
        mysql_connect("localhost", "root","******") or die(mysql_error());
        mysql_select_db("login") or die(mysql_error());

        if(isset($_POST['username']) && isset($_POST['password'])){
            $db_user = mysql_query("SELECT username FROM login_tb");
            $db_pass = mysql_query("SELECT password FROM login_tb");
            $ctrl_user = mysql_result($db_user,0);
            $ctrl_pass = mysql_result($db_pass,0);

            $username = $_POST['username'];
            $password = $_POST['password'];
            echo $username . $password;

            if(($username || $password) == NULL){
                echo "you have entered wrong username or password! <br/> please contact site admin.";
            }else{
                if($username == $ctrl_user && $password == $ctrl_pass){
                header("Location: ./nextpage.php");
                }
            }
        }
        ?>
    </body>
</html>
<? ob_end_flush(); ?>
于 2012-04-29T12:11:28.300 に答える