PHP / SQLite接受不正确的帖子值

时间:2013-03-03 23:21:44

标签: php html css sqlite

我正在使用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";
    }
?>

帮助!

2 个答案:

答案 0 :(得分:1)

我认为应该是......

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

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

答案 1 :(得分: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;