0

私自身、これを約1週間試しています。以下のでたらめなコードではっきりとわかるように、私は SQL ログイン システムを作成しようとしています。SQLite ファイルを使用しており、コードを実行してトラブルシューティングを行っても、PHP エラーは表示されません。これは、結果を確認する方法、または SQL に問題があることを意味していると思います。私は、一例として、完全に道に迷っています。どんな助けでも大歓迎です、ありがとう。

session_start();

$user = strtolower(sqlite_escape_string($_POST['username']));
$pass = strtolower(sqlite_escape_string($_POST['password']));

$db = sqlite_open('my DB.sqlite', 0666, $sqlerr);

$query = sqlite_query($db, "SELECT COUNT(*) FROM USERS WHERE USER = '$user' AND PASS = '$pass'", $sqlerr);
$result = sqlite_fetch_all($query, SQLITE_ASSOC);

if (count($result) == 1) {
    $_SESSION['loggedin'] = true;
    $_SESSION['loginFail'] = false;
    $_SESSION['user'] = $_POST['username'];
}

if ($sqlerr != null) {
    $_SESSION['sqlerr'] = $sqlerr;
}

if (!$_SESSION['loggedin']) {
    $_SESSION['loginFail'] = true;
}

sqlite_close($db);
header("Location: index.php");
exit();

(また、情報を忘れていたら申し訳ありません。しばらく StackOverflow の質問を投稿していません。)

4

1 に答える 1

2

ここにあなたの問題があります:

$query = sqlite_query($db, "SELECT COUNT(*) FROM USERS WHERE USER = '$user' AND PASS = '$pass'", $sqlerr);
$result = sqlite_fetch_all($query, SQLITE_ASSOC);

if (count($result) == 1) {

データベースから行数を求めています。これはのよう1になります。次に、この結果を取得して配列($result)に入れ、のエントリ数を数えます$result。の結果count($result)は常に正確に1になります。

データベースから返されたを比較するか、SELECT *代わりに使用する必要がありますSELECT COUNT(*)

于 2012-12-08T06:52:47.033 に答える