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) ...

AND:プリペアドステートメントを使用してSQLインジェクションを回避し、暗号化されていないパスワードをDBに保存しないでください。これは、セキュリティ上の大きな問題です。

于 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 に答える