0

何らかの理由で、ログイン ページの入力が正しく処理されていないようです。正しいユーザー入力が無効 (間違ったパスワード) として返されますが、特に明らかなことは何もわかりません。しかし、何らかの理由でユーザー名またはパスワードが渡されていないとしか思えません。より経験豊富な誰かが見て、私がそれを正しくする方法を提案することができますか. みんなありがとう。PS 私のフォームはOKなので、含まれていません。

function logcon($user, $password )
{

   $user = mysqli_real_escape_string($this->conn, $user);
   $esc_password = mysqli_real_escape_string($this->conn,$password);  
$sql = "SELECT * from USERS WHERE username  ='{$user}' AND password='{$password}'";
 $result = mysqli_query($this->conn, $sql);


              $row = mysqli_fetch_array($result);
            return $row;
            }

ログインページ。

if(isset($_POST['submit'])){

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


//To ensure that none of the fields are blank when submitting the form if
if(isset($_POST['user']) && isset($_POST['password'])) 
    {    


$user = stripslashes($user);
$password = stripslashes($password);
$db1=new dbmember();
$db1->openDB();           
$row=$db1->logcon($user, $password);


if($row[0]==1)
{
    session_start();
    $_SESSION['user'] = $user;
    $_SESSION['password'] = $password;
    $_SESSION['loggedin'] = "true";
    header("location:index.php");
}
        else
        {
            print ('<div id="error">Acess denied, wrong username or password?</div>');
        }
        }
        else
            {
            print ('<div id="error">Enter something!</div>');
        }

}
4

1 に答える 1

0

クエリで間違った変数名を使用しているようです。また、パスワードをプレーンテキストとして保存するのではなく、何らかのハッシュ化とソルト化を行うことを検討することをお勧めします.

$sql = "SELECT * from USERS WHERE username  ='{$user}' AND password='{$password}'";

する必要があります

$sql = "SELECT * from USERS WHERE username  ='{$user}' AND password='{$esc_password}'";

そして、条件付きチェックがオフになっているようです。戻り値があるかどうかを確認する代わりに、結果の最初のフィールドが = 1 であるかどうかを確認しています。

if($row[0]==1)

おそらくあるはずです

if($row)
于 2013-08-02T15:52:32.003 に答える