Я создаю систему входа на php. Я не понимаю, в чем проблема. Я пытался погуглить, но отсутствие знаний не позволило мне понять, в чем проблема. Вот код и ошибка. Спасибо
"Notice: Undefined index: password in D:\xampp\htdocs\demo\last_project\includes\server.php on line 49"
if (isset($_POST['login'])) {
$username = mysqli_real_escape_string($db, $_POST['username']);
$password = mysqli_real_escape_string($db, $_POST['password']);
// Ensure that form fields are filled properly
if (empty($username)) {
array_push($errors, "Username is required!");
}
if (empty($password)) {
array_push($errors, "Password is required!");
}
if (count($errors) == 0){
$password = md5($password); // Encrypt password before comparing this one with the one in database
$query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$result = mysqli_query($db, $query);
if (mysqli_num_rows($result) == 1) {
$_SESSION['username'] = $username;
$_SESSION['success'] = "You are now logged in";
header('location: ../system.php'); // Redirect to main page location
} else {
array_push($errors, "Wrong username/password combination");
header('location: ../php/login.php');
}
}
}
MD5 считается нарушенным в целях безопасности и недостаточен для хеширования паролей. Вместо этого используйте password_hash() и password_verify(). Если вы используете версию PHP до 5.5, вы можете использовать этот пакет совместимости.
Не полагайтесь на функции real_escape_string() для предотвращения внедрения SQL, одних их недостаточно. Вы должны использовать подготовленные операторы с привязанными параметрами через драйвер mysqli или PDO. У Эта почта есть несколько хороших примеров.
[Повторяющаяся проблема] (stackoverflow.com/questions/4261133/…)






Кажется, что: $ _POST ['пароль'] не существует. Вы пытались создать var_dump свой $ _POST, чтобы проверить опубликованные значения?