请帮我这个,因为每当我打开这个我都会得到同样的错误。在我的数据库中我插入了一个电子邮件和密码但是现在当我将其插入登录表单时我收到的电子邮件或密码不正确即使它们是我输入的正确的 enter image description here
user.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);
$tempo = md5($password);
$stmt->bindParam(":password", $tempo, PDO::PARAM_STR);
$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) && !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>
答案 0 :(得分:0)
@Mohandattu。 为了调试这个,我建议你做些什么。
首先检查数据库,密码的保存方式。
然后转储您的实际密码,即md5($password);
然后交叉检查两者,我认为它可能会有所不同,有时如果您的密码列长度较小,则无法将实际加密值插入数据库,在这种情况下,它将修剪值和插入。
另一种方法