Основной вход в систему с паролем хеш

1

Я пытаюсь изучить кодировку входа в систему, и ниже в первой попытке она работает нормально, но я понимаю, что могу просто использовать логин userID и любой другой пароль для входа в систему.

Я пытаюсь усилить процесс входа во вторую попытку, но столкнулся с сообщением об ошибке ниже. Я не мог понять, где я ошибаюсь.

Существует $username & $passWD с использованием filter_has_var чтобы получить данные из формы входа в систему. Это не показано ниже в кодах.

Предупреждение: mysqli_stmt_bind_result(): Число переменных привязки не соответствует количеству полей в подготовленном сообщении

1-я попытка:

<?php
$username = filter_has_var(INPUT_POST, 'userName') ? $_POST['userName']: null;
$passWD  = filter_has_var(INPUT_POST, 'pwd') ? $_POST['pwd']: null;

include 'database_conn.php';    // make db connection

$sql = "SELECT passwordHash FROM users WHERE username = ?";
$stmt = mysqli_prepare($conn, $sql);    // prepare the sql statement

mysqli_stmt_bind_param($stmt, "s", $username);     
mysqli_stmt_execute($stmt); // execute the query
mysqli_stmt_bind_result($stmt, $passWDHash);

if (mysqli_stmt_fetch($stmt)) {
    password_verify($passWD, $passWDHash);
    echo "<p>Login successful</p>";
}
else {
    echo "<p>Please try again.</p>";
}
mysqli_stmt_close($stmt); 
mysqli_close($conn);
?>

Вторая попытка:

<?php
$username = filter_has_var(INPUT_POST, 'userName') ? $_POST['userName']: null;
$passWD  = filter_has_var(INPUT_POST, 'pwd') ? $_POST['pwd']: null;

include 'database_conn.php';    // make db connection

$sql = "SELECT * FROM users WHERE username = ? AND passwordHash =?";
$stmt = mysqli_prepare($conn, $sql);    // prepare the sql statement

mysqli_stmt_bind_param($stmt, "ss", $username, $passWD);     
mysqli_stmt_execute($stmt); // execute the query

mysqli_stmt_bind_result($stmt, $username, $passWDHash);

if (mysqli_stmt_fetch($stmt)) {
    password_verify($passWD, $passWDHash);
    echo "<p>Login successful</p>";
}
else {
    echo "<p>Sorry please try again.</p>";
}

mysqli_stmt_close($stmt); 
mysqli_close($conn);
?>
Теги:
mysqli

1 ответ

0

использование шаблона * не рекомендуется. вероятно, в таблице больше столбцов, чем вам нужно?

maby что-то вроде:

SELECT username,passwordHash FROM users WHERE username = ? AND passwordHash =?
  • 0
    Спасибо, ошибка не появилась ... но как-то с правильным именем пользователя и паролем она не работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню