PHP Логин nouser - PullRequest
       4

PHP Логин nouser

0 голосов
/ 25 января 2019

Я создаю систему входа в систему для своего веб-сайта, в кодировке, более новой для php, и когда я нажимаю кнопку входа в систему, она отправляет мне «login.php? Error = nouser» в URL, когда моя электронная почта находится в моей базе данных, я не уверен, что я испортил какой-то код или что-то нужно перемещать или нет. Я новичок в php, и у меня недостаточно глаз, чтобы заметить некоторые из этих проблем.

<?php

if (isset($_POST['login-submit'])) {
    require 'dbh.inc.php';

    $emailuid = $_POST['emailuid'];
    $password = $_POST['pwduid'];

    if (empty($emailuid) || empty($password)) {
        header("Location: ../login.php?error=emptyfields&emailuid=".$emailuid);
        exit();
    } else {
        $sql = "SELECT * FROM users WHERE emailUsers=?";
        $stmt = mysqli_stmt_init($conn);
        if (!mysqli_stmt_prepare($stmt, $sql)) {
            header("Location: ../login.php?error=sqlerror");
            exit();
        } else {
            mysqli_stmt_bind_param($stmt, "ss", $emailuid, $emailuid);
            mysqli_stmt_execute($stmt);
            $result = mysqli_stmt_get_result($stmt);
            if ($row = mysqli_fetch_assoc($result)) {
                $pwdCheck = password_verify($password, $row['pwdUsers']);
                if ($pwdCheck == flase) {
                    header("Location: ../login.php?error=wrongpassword");
                    exit();
                } elseif ($pwdCheck == true) {
                    session_start();
                    $_SESSION['userId'] = $row['idUsers'];
                    $_SESSION['userfnId'] = $row['fnidUsers'];
                    $_SESSION['userlnId'] = $row['lnidUsers'];

                    header("Location: ../login.php?login=success");
                    exit();
                } else {
                    header("Location: ../login.php?error=wrongpassword");
                    exit();
                }
            } else {
                header("Location: ../login.php?error=nouser");
                exit();
            }
        }
    }
} else {
    header("Location: ../login.php");
    exit();
}

Любая помощь приветствуется, я узнаю, как все это работает. спасибо за понимание.

1 Ответ

0 голосов
/ 25 января 2019

Вы указали только один заполнитель в своем запросе:

$sql = "SELECT * FROM users WHERE emailUsers=?";

Но вы пытались связать два параметра:

mysqli_stmt_bind_param($stmt, "ss", $emailuid, $emailuid);

Возможно, вы просто хотите это:

mysqli_stmt_bind_param($stmt, "s", $emailuid);

Также орфография:

if ($pwdCheck == flase) {

Кроме того, это не имеет смысла:

if ($pwdCheck == false) {
    ...
} elseif ($pwdCheck == true) {
    ...
} else {
    ...
}

Просто сделайте это:

if ($pwdCheck == false) {
    ...
} else {
    ...
}

Или лучше:

if (password_verify($password, $row['pwdUsers']) === true) {
    ...
} else {
    ....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...