gpt4 book ai didi

php - sqlite登录表单无法正常工作

转载 作者:行者123 更新时间:2023-12-03 19:34:59 24 4
gpt4 key购买 nike

我试图检查输入字段中输入的用户名和密码是否存储在我的数据库中。如果没有,则应该给出错误消息。我的数据库atm中有一个用户:
用户名:亚历山大
密码: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()

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

关于php - sqlite登录表单无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37259744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com