0

我自己已经尝试了大约一个星期。正如您在下面的随意代码中可以清楚地看到的那样,我正在尝试创建一个 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 回答