phppdo:登录系统
我正在开发一个PHP PDO登录系统,但我一直收到一个错误,可能是我的代码的某些部分不正确phppdo:登录系统,php,mysql,pdo,Php,Mysql,Pdo,我正在开发一个PHP PDO登录系统,但我一直收到一个错误,可能是我的代码的某些部分不正确 //LOG IN VERIFICATION if (isset($_POST['username'],$_POST['pass'])) { try { $con = new PDO("mysql:host=" . host . ";dbname=" . database, user, auth); $con->setAttribute(PDO::ATTR_EM
//LOG IN VERIFICATION
if (isset($_POST['username'],$_POST['pass'])) {
try {
$con = new PDO("mysql:host=" . host . ";dbname=" . database, user, auth);
$con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if (!empty($_POST['username'])&& !empty($_POST['pass'])) {
//username and password sent from Form
$usernames = trim($_POST['username']);
$password = $_POST['pass'];
$select= $con -> prepare("SELECT username,password FROM users WHERE username='$username' AND password='$password'");
$select ->execute();
$results = $select->fetch(PDO::FETCH_ASSOC);
if (count($results) > 0 && password_verify($password, $results['password'])) {
header('location:home.php');
} else{
header('location:login.php');
}
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
}
我怀疑错误在这里
$select= $con -> prepare("SELECT username,password FROM users WHERE username='$username' AND password='$password'");
$select ->execute();
$results = $select->fetch(PDO::FETCH_ASSOC);
因为我验证了与数据库的连接。任何帮助都将不胜感激 您正在分配给
$usernames
,而不是$username
。然而,真正的问题是count($results)
——您不能用这种方式计算行数。这意味着,计数将为0,因此执行else
分支。请参见此处:
编辑:在这种情况下,只需调试代码和
var\u转储(count($results))
,例如。您有一个简单的if
语句-如果执行了意外的分支,则if
条件有问题。执行代码时出现了什么错误???即使条目不在数据库中,我也会继续前往登录页面。您的代码随后失败,您需要找出原因;调试。你有一个明显的打字错误。检查错误会告诉您这一点。另外,由于您是PDO,所以应该使用准备好的语句。您将受到严重的SQL注入的影响谢谢您的帮助和投票。