-2

私はちょっと初心者で、ゼロから自分のPHPログインをコーディングしましたが、それでもエラーが発生します。コードは次のとおりです。

        <?php 
    include 'connection.php';
    $query = " SELECT * FROM admin";
    $result = mysql_query($query) or die(mysql_error());

    ?>
    <form action="<?php echo $_SERVER['SELF_PHP']; ?>" method="post">
        Username : <input type="text" name="usernameInput" value="" />
        Password : <input type="password" name="passwordInput" value="" />
                    <input type="submit" value="Login" />
    </form>

    <?php
    $username = $_POST['usernameInput'];
    $password = $_POST['passwordInput'];
    if ($username = $result['username']) {
        if ($password = $result['password']){
            header('Location: admin.php');
        } else {
            echo "PASSWORD IS INCORRECT";
        }
    } else {
        echo "USERNAME IS INCORRECT";
    }
    ?>

したがって、これを修正できるか、PHPログインからより簡単な方法を取得できる場合は教えてください。:)

4

2 に答える 2

2

いくつかのこと...

  1. mysql関数を使用しないでください
  2. ==文字列を比較するために使用する必要がありますが、=
  3. クエリの結果を実際に取得する必要があります

    include 'connection.php';
    $query = " SELECT * FROM admin";
    $result = mysql_query($query) or die(mysql_error()); 
    $row = mysql_fetch_row($result); /* add this */
    
    ?>
    <form action="<?php echo $_SERVER['SELF_PHP']; ?>" method="post">
        Username : <input type="text" name="usernameInput" value="" />
        Password : <input type="password" name="passwordInput" value="" />
                    <input type="submit" value="Login" />
    </form>
    
    <?php
    if(isset($_POST['usernameInput']) && isset($_POST['passwordInput'])){
        $username = $_POST['usernameInput'];    
        $password = $_POST['passwordInput'];
    }
    else{
       echo 'some error ...';
    }
    
    if($username == $row ['username'] && $password == $row ['password']){
        header('Location: admin.php');
    } 
    else{
        echo ' username or password is wrong';
    }
    
    ?>
    
于 2013-03-24T20:34:59.817 に答える
0

最初に投稿を確認せずに、同じフォームを何度も送信していることを指摘する必要があります。また、フォームを送信すると、htmlが開始され、ヘッダーが既に送信されているため、リダイレクト するヘッダーを送信できなくなります。

Mysql関数は非推奨です。mysqliインターフェースを使用してください。

割り当てのような他のいくつかのバグの中で=の代わりに等しい==

この方法で試してください:

投稿が存在しない場合は、フォームを送信してください。それ以外の場合は、リダイレクトして問題がないかどうかを確認してください。フォームを再送する

<?php 
if($_POST){
    include 'connection.php';
    $query = " SELECT * FROM admin";
    $r = mysql_query($query) or die(mysql_error());
    // get an associated array from query result resource. 
    $result = mysql_fetch_assoc($r);  
    $username = $_POST['usernameInput'];
    $password = $_POST['passwordInput'];
    if (  ($username == $result['username'])
       && ($password == $result['password'])){
        header('Location: admin.php');
        exit(0);
    } else {
        echo "PASSWORD IS INCORRECT";
    }
} 
?>
<form action="<?php echo $_SERVER['SELF_PHP']; ?>" method="post">
    Username : <input type="text" name="usernameInput" value="" />
    Password : <input type="password" name="passwordInput" value="" />
                <input type="submit" value="Login" />
</form>

<?php

?>
于 2013-03-24T20:40:11.020 に答える