sqlite登录表单无法正常工作


sqlite login form having trouble getting it to work

im试图检查输入字段中的用户名和密码是否存储在我的数据库中。如果没有,那么它应该给出一条错误消息。我的数据库atm中有一个用户:用户名:alexander
密码:alexalex

但是,当我运行代码登录时,它并没有说这是正确的登录。

<?php 
 try{
  $db = new PDO('sqlite:users.db');
 }
 catch(PDOException $err){}
 if(isset($_POST['username'])){
  $username = $_POST['username'];
  $password = $_POST['password'];
  try{
   $sql = "SELECT * FROM players WHERE username='$username' AND password='$password'";
   $st = $db->prepare($sql);
   $st->execute();
   if($st->fetchColumn() == 1){
    //SUCCES LOGIN
   }else{
    //FAILED LOGIN
     }
    }catch(PDOException $err){}
   }
   ...HTML CODE...
   <form action="" method="POST" class="login-form">
     <input type="text" id="one" name="username" placeholder="Username">
     <input type="password"  id="two" name="password" placeholder="Password">
     <input type="submit" value="LOGIN" class="three">
   </form>

非常感谢任何能够解决此登录问题的人!

如Jay Blanchard所述:

if($st->fetchColumn() == 1)

您应该使用fetch()

然而,一旦更改为fetch():,这个条件语句仍然会失败

if($st->fetch() == 1)

因为这检查是否只有1并且还需要满足这两个条件。

如果有多行相同的用户名,也会使您失败。

因此,使用>1>=1

也如评论中所述。如果这是一个直播网站或打算上线,请使用准备好的声明和password_hash()

你的数据库被黑客入侵只是时间问题。