#MYSQL, PHP Login не работает, но на 100% уверены, что должен?

Я изо всех сил пытаюсь понять, почему я не могу войти в систему, я создал своего пользователя в базе данных MySQL с шифрованием md5 для пароля, а также правильно настроил его в базе данных, вот мой код. Выдает неверное имя пользователя или пароль, но я на 100% уверен, что правильно добавил его в MySQL.

users.php, я думаю, моя проблема может быть здесь, но я просто не могу ее найти

<?php
class User {
    protected $pdo;

    function __construct($pdo){
        $this->pdo = $pdo;
    }
    public function checkInput($var){
        $var = htmlspecialchars($var);
        $var = trim($var);
        $var = stripcslashes($var);
        return $var;
    }
    public function login($email, $password){
        $stmt = $this->pdo->prepare("SELECT 'user_id' FROM 'users' WHERE 'email' = 
    :email AND 'password' = :password");
        $stmt->bindParam(":email", $email, PDO::PARAM_STR);
        //ORIGINAL
        //OLD CODE $stmt->bindParam(":password", md5($password), PDO::PARAM_STR);
        $password = md5($_POST['password'], PDO::PARAM_STR);
        $stmt->bindParam(':password',$password);
        //END OF ORIGINAL
        $stmt->execute();

        $user = $stmt->fetch(PDO::FETCH_OBJ);
        $count = $stmt->rowCount();

        if ($count > 0){
            $_SESSION['user_id'] = $user->user_id;
            header('Location: home.php');
        }else{
            return false;
        }
    }

}
?>

Мой login.php

<?php
if (isset($_POST['login']) && !empty($_POST['login'])){
    $email    = $_POST['email'];
    $password = $_POST['password'];

    if (!empty($email) or !empty($password)){
        $email    = $getFromU->checkInput($email);
        $password = $getFromU->checkInput($password);

        if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
            $error = "Invalid format";
        }else{
            if ($getFromU->login($email, $password) === false){
                $error = "The email or password is incorrect!";
            }
        }

    }else{
        $error = "Please enter username and password";
    }
}
?>
<div class = "login-div">
    <form method = "post">
        <ul>
            <li>
                <input type = "text" name = "email" placeholder = "Please enter your Email 
      here"/>
            </li>
            <li>
                <input type = "password" name = "password" placeholder = "password"/><input
                    type = "submit" name = "login" value = "Log in"/>
            </li>
            <li>
                <input type = "checkbox" Value = "Remember me">Remember me
            </li>
            <?php
            if (isset($error)){
                echo '<li class = "error-li">
            <div class = "span-fp-error">'.$error.'</div>
          </li> ';
            }
            ?>
        </ul>
    </form>
</div>

Нам нужно увидеть структуру таблицы вашей базы данных. show create table users

bassxzero 16.05.2018 18:57
Пожалуйста, не храните пароли в виде обычного текста и не хешируйте его с помощью слабых алгоритмов, используйте функции пароля, предоставляемый PHP. Проверить: Как использовать bcrypt для хеширования паролей в PHP
Spoody 16.05.2018 18:57

100% уверены? Woops

RiggsFolly 16.05.2018 19:01

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

RiggsFolly 16.05.2018 19:03

Пожалуйста, не используйте хеширование пароля катить свой собственный специально без использования MD5 (). PHP предоставляет password_hash() и password_verify(), пожалуйста, используйте их. И вот несколько хорошие идеи о паролях Если вы используете версию PHP до 5.5 здесь доступен пакет совместимости

RiggsFolly 16.05.2018 19:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
41
1

Ответы 1

Не заключайте идентификаторы SQL в одинарные кавычки.

Строковые литералы заключаются в одинарные кавычки. Сравнивать

SELECT t.email FROM mytable t LIMIT 1 

к

SELECT 'email' FROM mytable t LIMIT 1 

Другие вопросы по теме