2017-09-27 10 views
0

ここに私のコードがあります。間違ったユーザ名とパスワードを入力したときにログインに成功

$username = isset($_POST['username']); 
$password = isset($_POST['password']); 
//sql dtabase conn 
    $conn = mysqli_connect("localhost","root","","login"); 
    //query the dtabase for user 

    $result = mysqli_query($conn, "select * from users where username = 
    '$username' and password = '$password'")or die("failed to query database".mysqli_connect_error()); 

    $row = mysqli_fetch_array ($result); 

    if($row['username'] == $username && $row['password'] == $password && ("" 
    !== $username || "" !== $password)){ 
     echo "Login success".$row['username']; 
    }else{ 
     echo "Failed to login"; 
    } 

私は初心者です。あなたを助けてください

+0

変数を割り当てるには、issetを使用しないでください。いくつかのエスケープ機能などを使用してください。あなたはiss文をif文に置くべきです –

+0

まず、この行を '$ username = isset($ _ POST ['username'])という2行に修正しますか? $ _POST ['username']: ""; $ password = isset($ _ POST ['password'])? $ _POST ['password']: ""; ' –

答えて

2

issetを使用して、ユーザー名/パスワードを確認してください。これは値ではなくtrue/falseを返します。ですから、DB内のレコードと一致することは決してないだろうし、あなたがあなたの条件に一致することは決してないだろう資格情報は(一致または""のいずれか)

をチェック

に等しい $usernameを設定します
$username = isset($_POST['username']) ? $_POST['username'] : false; 

のようなものを試してみてください$_POST['username']の値は、設定されていない場合はfalseになります。それであなたは次のようなものを使ってテストすることができます:

if (($username && $password) and ($username == $row['username'] and $password == $row['password'])) 

これはあなたよりもはるかに近くなるはずです。

もう1つの点は、パスワードに何らかの種類のハッシングメカニズムを使用する必要があることです。あなたがそれを得た方法では、プレーンテキストのパスワード値を探しているように見えます(あなたがフロントエンドでハッシュしている場合を除きます)。パスワードを平文としてDBに保存しないでください。

0

あなたのIFステートメントの最後の条件||あなたのisset()が常に値を返すので、パスワードは空ではなく、常に成功します。

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

//sql dtabase conn 
$conn = mysqli_connect("localhost","root","","login"); 
//query the dtabase for user 

$result = mysqli_query($conn, "select * from users where username = 
'$username' and password = '$password'")or die("failed to query database".mysqli_connect_error()); 

$row = mysqli_fetch_array ($result); 

if($row['username'] == $username && $row['password'] == $password){ 
    echo "Login success".$row['username']; 
}else{ 
    echo "Failed to login"; 
}