Я изо всех сил пытаюсь понять, почему я не могу войти в систему, я создал своего пользователя в базе данных 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>
100% уверены? Woops
Также не обязательно подбадривать все, это просто раздражает тех, кто действительно может попытаться вам помочь.
Пожалуйста, не используйте хеширование пароля катить свой собственный специально без использования MD5 (). PHP предоставляет password_hash() и password_verify(), пожалуйста, используйте их. И вот несколько хорошие идеи о паролях Если вы используете версию PHP до 5.5 здесь доступен пакет совместимости






Не заключайте идентификаторы SQL в одинарные кавычки.
Строковые литералы заключаются в одинарные кавычки. Сравнивать
SELECT t.email FROM mytable t LIMIT 1
к
SELECT 'email' FROM mytable t LIMIT 1
Нам нужно увидеть структуру таблицы вашей базы данных.
show create table users