Форма входа в систему для входа любого пользователя с любым паролем - PullRequest
0 голосов
/ 05 марта 2019

Я использую php и ibm db2 для создания простой страницы входа. Однако код не дает желаемых результатов, как ожидалось.

Вот мой код:

if (isset($_POST['login'])) {
$username = ($_POST['username']);
$password = ($_POST['password']);

if (empty($username)) {
    array_push($errors, "Username is required");
}
if (empty($password)) {
    array_push($errors, "Password is required");
}

elseif (count($errors)==0) {
    //$password = md5($password);

    $query = "SELECT * FROM people WHERE username = '$username' AND password = '$password'";
    $results = db2_exec($db, $query);

    if (db2_num_rows($results)) {

        $_SESSION['username'] = $username;
        $_SESSION['success'] = "Logged in successfully";
        //echo "<script type='text/javascript'>window.location.href = 'index.php';</script>";
        header('Refresh: 0; URL=index.php', true, 301);
    }else{
        array_push($errors, "Wrong username/password combination, Please try again.");
    }
}

}

Ответы [ 2 ]

1 голос
/ 05 марта 2019

Вы не можете использовать db2_num_rows (), чтобы получить количество строк в наборе результатов.

Это db2_num_rows() сообщает о количестве вставленных / обновленных / удаленных строк, на которые повлиялопо самой последней инструкции вставки / обновления / удаления.

Если вы хотите проверить хотя бы одну строку в наборе результатов, используйте один из документированных методов для извлечения строки изнабор результатов.Эти функции будут возвращать true, если есть строка, в противном случае возвращать false, если строки нет или строк больше.

Рассмотрите возможность использования подготовленного оператора в соответствии с примерами, чтобы запрос компилировался только один раз и выполнялсямного раз.

0 голосов
/ 05 марта 2019

запрос решен, спасибо всем! Я публикую здесь бегущий код;

if (isset($_POST['login'])) {
$username = ($_POST['username']);
$password = ($_POST['password']);

if (empty($username)) {
    array_push($errors, "Username is required");
}
if (empty($password)) {
    array_push($errors, "Password is required");
}

elseif (count($errors)==0) {
    $password = md5($password);

    $query = "SELECT * FROM people WHERE username = '$username' AND password = '$password'";
    $results = db2_exec($db, $query);

    $row = db2_fetch_assoc($results);

    if ($row['username']== $username && $row['password'] == $password) {

        $_SESSION['username'] = $username;
        $_SESSION['success'] = "Logged in successfully";

        header('Refresh: 0; URL=index.php', true, 301);
    }else{
        array_push($errors, "Wrong username/password combination, Please try again.");
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...