我目前正在使用自己的CMS。
出于某种原因,它似乎不接受我的登录详细信息...代码为:
<?php
session_start();
include_once('../includes/connection.php');
if (isset($_SESSION['logged_in'])) {
// display index
} else {
if (isset($_POST['username'], $_POST['password'])) {
$username = $_POST['username'];
$password = md5($_POST['password']);
if (empty($username) or empty($password)){
$error = 'Please enter all of the fields!';
} else {
$query = $pdo->prepare("SELECT * FROM users WHERE user_name = ? AND user_password = ?");
$query->bindValue(1, $username);
$query->bindValue(2, $password);
$query->execute();
$num = $query->rowCount();
if ($num == 1) {
// user entered correct
$_SESSION['logged_in'] = true;
header('Location: index.php');
exit();
} else {
//user entered false
$error = "Incorrect details!";
}
}
}
?>
<html>
<head>
<title>CMS</title>
<link rel="stylesheet" type="text/css" href="../assets/style.css" />
</head>
<body>
<div class="container">
<a href="index.php" id="logo">CMS</a>
<br /><br />
<?php if (isset($error)) { ?>
<small style="color:#aa0000;">
<?php echo $error; ?>
<br /><br />
</small>
<?php } ?>
<form action="index.php" method="post" autocomplete="off">
<input type="text" name="username" placeholder="Username" />
<input type="password" name="password" placeholder="Password" />
<input type="submit" value="Login" />
</form>
</div>
</body>
</html>
<?php
}
?>
和连接是:
> <?php
>
> try { $pdo = new PDO('mysql:host=localhost;dbname=website', 'root',
> ''); } catch (PDOException $se) { exit('Database error.'); }
>
>
> ?>
每次我尝试使用正确的详细信息登录时,都会显示“错误的详细信息”
有任何想法吗?
您正在检查查询是否返回结果。但是,您的操作方式不适用于SELECT查询。它用于例如删除。
<?php
if ($res = $conn->query($sql))
{
if ($res->fetchColumn() > 0)
{
// user entered correct
}
else
{
//user entered false
}
}
有关此问题的更多信息,请参见PHP手册。
我想在手册中添加以下报价:
对于大多数数据库,PDOStatement :: rowCount()不会返回受SELECT语句影响的行数。而是使用PDO :: query()发出与所要SELECT语句相同的谓词的SELECT COUNT(*)语句,然后使用PDOStatement :: fetchColumn()检索将返回的行数。然后,您的应用程序可以执行正确的操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句