0

我正在使用 SQLite 创建一个简单的 PHP 登录系统,当用户发布 HTML 表单时,无论他们输入什么,系统都会将他们引导到“仅限会员页面”。这是我的表单处理代码:

<?php
    $username = $_POST["username"];
    $password = $_POST["password"];

    $database = new PDO("sqlite:database.sqlite");

    $result = $database -> query("SELECT COUNT (*) FROM accounts WHERE username = '$username' AND password = '$password'");
    if ($result > 0)
    {
            setcookie("session", "Cool", time()+3600);
            header("location:index.php");
    }
    else
    {
            echo "Failure";
    }
?>

帮助!

4

2 回答 2

1

我觉得应该是...

if ($result->rowCount() > 0) ...

并且:使用准备好的语句来避免 SQL 注入,不要在数据库中存储未加密的密码,这是一个巨大的安全问题。

于 2013-03-03T23:25:44.217 回答
0

试试这个(你不应该需要计数,只是一个简单的逻辑语句):

$query = "SELECT * FROM accounts WHERE username = :username AND password = :password";
$stmt = $database->prepare($query);
$stmt->execute(array(":username"=>$username, "password"=>$password));
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if($result)
{
    //Success
    setcookie("session", "Cool", time()+3600);
    header("location:index.php");
}
// Not successful.
return null;
于 2013-03-03T23:38:43.030 回答