Saleh Mohammad Aria Ответов: 2

Аутентификация входа пользователя (логика)


Здравствуйте, так как я новичок в PHP и прошу прощения за этот довольно простой вопрос. Я не смог получить логику аутентификации пользователя в следующем коде:

Я знаю остальную часть кода, но чтобы войти в систему пользователя, я понятия не имею об этом, как это работает? кто-нибудь может мне это объяснить ?
--------
$count = mysqli_num_rows($result);

если ($count == 1){
$_SESSION['username'] = $username;
}еще{
$fmsg = "неверные учетные данные для входа.";
}
-----



Выход из системы";

}еще{
//3.2 при первом посещении страницы пользователем будет отображена простая форма входа в систему.
?>



Заранее спасибо!

Что я уже пробовал:

Я искал информацию об этой функции
mysqli_num_rows($result)
но я узнал, что он подсчитывает строки таблицы в SQL DB, но как он работает для аутентификации пользователя при входе в систему, я не мог понять.

2 Ответов

Рейтинг:
6

Richard MacCutchan

В том, что у вас есть, отсутствует много кода. Сначала вам нужно захватить идентификатор пользователя и пароль. Затем вам нужно создать хэш пароля для обеспечения безопасности. Затем эти значения используются для поиска в базе данных соответствующей записи пользователя. Если это не удается, то вы отклоняете вход в систему и предлагаете пользователю возможность создать новую учетную запись. Видеть Аутентификация пользователя PHP с помощью MySQL - Phppot[^].


Richard Deeming

"Тогда вам нужно создать хэш пароля для безопасности. Затем эти значения используются для поиска в базе данных соответствующей записи пользователя."

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

В PHP вы можете просто позвонить функцию password_verify[^] для сравнения введенного пароля с сохраненным хэшем. Для регистрации, хэш пароля[^] будет генерировать соль и хэшировать пароль для вас.

Richard MacCutchan

Мой ответ не должен был быть точным, фактические детали были упражнением для операции.

Рейтинг:
17

Patrice T

Цитата:
Я знаю остальную часть кода, но чтобы войти в систему пользователя, я понятия не имею об этом, как это работает? кто-нибудь может мне это объяснить ?

Логика заключается в том, что этот код не является полным, и вы забыли скопировать начало.
// here is a query that do a select for reccords matching $username and $password
// $result storing the answer
// since only 1 record can match, you get code below for the end of login.
$count = mysqli_num_rows($result);
if ($count == 1){
    $_SESSION['username'] = $username;
}else{
    $fmsg = "Invalid Login Credentials.";
}