Кажется, я не могу заставить это утверждение еще работать в php - PullRequest
0 голосов
/ 10 апреля 2020
<?php 

session_start();

$link = mysqli_connect(database connection info);

if (mysqli_connect_error()) {
    echo "Could not connect to database";
    die;
}

if (isset($_POST['submit'])) {

    $query = "SELECT * FROM users WHERE email = '".$_POST['email']."'";

    $result = mysqli_query($link, $query);

    if ($row = mysqli_fetch_array($result)) {

        if ($_POST['email'] == $row['email'] && password_verify($_POST['password'], $row['password']))
        {
                $success .= "We're in baby";
        } else {
            $error .= "didn't work boi";
        }


    }

}

?>

По какой-то причине оператор else в этом коде

        if ($_POST['email'] == $row['email'] && password_verify($_POST['password'], $row['password']))
        {
                $success .= "We're in baby";
        } else {
            $error .= "send help";
        }

вообще не работает. Проблема не в переменной error, так как echo также не работает. Я не могу получить оператор else для вывода какого-либо ответа вообще, если исходный оператор if возвращает false. Оператор if выполняется отлично, если он возвращает true!

Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Согласно моему комментарию, чтобы выполнить оператор else, введите действительный адрес электронной почты из вашей базы данных и неверный пароль. Это должно попасть в утверждение else.

Чтобы повторить $error, определите $error = ''; в верхней части скрипта, а затем добавьте

echo $error;  //Below the closing `}` of the `if($row....) ` statement 

Также ваш запрос вообще не является безопасным. Вы напрямую вводите переменную, которой может легко управлять любой. Вы никогда не должны доверять такому. Следовательно, почему мы подготовили заявления. Они помогают предотвратить SQL инъекционные атаки, а также проблемы с цитированием. Перейдите по ссылке ниже, чтобы узнать, как использовать их с mysqli_ API.

https://phpdelusions.net/mysqli

0 голосов
/ 10 апреля 2020

Добавьте else часть для if ($row = mysqli_fetch_array($result)) - возможно, ваш запрос не выполнен или указанный адрес электронной почты не существует в БД.

Условие $_POST['email'] == $row['email'] бесполезно, поскольку оно уже является частью SQL оператор.

Кроме того, важно (!) : ваш код уязвим для SQL внедрения. Не помещайте неэкранированные значения из POST в запрос SQL.

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