PHP ничего не делает, если имя пользователя / адрес электронной почты неверны - PullRequest
0 голосов
/ 11 марта 2019

Я делаю систему входа в систему.Все работает, но когда я использую адрес электронной почты (имя пользователя) в логине, которого нет в базе данных, он переходит на URL с именем файла, а затем только данные формы (адрес электронной почты и пароль).Мне нужно установить заголовок с ошибкой, чтобы я мог сказать, что вход не удался.Кто-нибудь видит проблему?

<?php

ob_start();

if (isset($_REQUEST['password'])) {
    require 'connect.php';
    $password = $_REQUEST['password'];
    $mail = $_REQUEST['email'];

    if (empty($mail) || empty($password)) {
        header('location: ../login.php?error=empty');
        exit();
    } else {
        $sql = "SELECT * FROM account WHERE email = ?;";
        $stmt = mysqli_stmt_init($connect);
        if (!mysqli_stmt_prepare($stmt, $sql)) {
            header("Location: ../login.php?error=sqlError");
            exit();
        } else {
            mysqli_stmt_bind_param($stmt, "s", $mail);
            mysqli_stmt_execute($stmt);
            $result = mysqli_stmt_get_result($stmt);
            if ($row = mysqli_fetch_assoc($result)) {
                $passwordCheck = password_verify($password, $row['wachtwoord']);
                if ($passwordCheck == false) {
                    header("Location: ../login.php?error=passwordWrong");
                    exit();
                } elseif ($passwordCheck == true) {
                    session_start();
                    $_SESSION['userId'] = $row['account_id'];
                    $_SESSION['username'] = $row['gebruikersnaam'];
                    header("Location: ../index.php?login=succes");
                    exit();
                }
            } else {
                header("Location login.php?error=noUser");
                exit();
            }
        }
    }
} else {
    header("Location: ../login.php?error=");
    exit();
}

1 Ответ

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

Поскольку ваша форма входа в систему работает.Позвольте мне спросить вас:

Использует ли ваша форма действия метод get или метод post?.

Помните, когда вы отправляете форму с методом GET в бэкэнд, например, в файл php, всепараметры формы видны в URL, все в порядке.

Так что вы можете проверить это ниже.

1.) Убедитесь, что ваша форма использует метод Post, например method = "POST"

2).Почему вы используете $_REQUEST[..].в php лучше использовать метод $_POST для http-запроса, поступающего из форм ввода

что-то вроде

if(isset($_POST['submit'])){
require 'connect.php';
    $password = $_POST['password'];
    $mail = $_POST['email'];

ИЛИ

if (isset($_POST['password'])) {
    require 'connect.php';
    $password = $_POST['password'];
    $mail = $_POST['email'];

Примечание: Переменные в $_REQUEST предоставляются сценарию с помощью механизмов ввода GET, POST и COOKIE и поэтому могут быть изменены удаленным пользователем и не могут быть доверенными.Поэтому правильная проверка и дезинфекция должны выполняться как на передней, так и на внутренней стороне.

см. Предупреждения по php

Наконец, если какое-либо из этих предложений не работает для вас, вызатем можете загрузить также все поля формы, и я получу, что она будет работать на вас.Спасибо

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