即使电子邮件和密码是正确的仍然我收到电子邮件或密码错误,我不能通过在PHP中使用pdo进入下一页?

时间:2018-04-26 10:17:56

标签: php

请帮我这个,因为每当我打开这个我都会得到同样的错误。在我的数据库中我插入了一个电子邮件和密码但是现在当我将其插入登录表单时我收到的电子邮件或密码不正确即使它们是我输入的正确的 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>

1 个答案:

答案 0 :(得分:0)

@Mohandattu。 为了调试这个,我建议你做些什么。

  • 首先检查数据库,密码的保存方式。

  • 然后转储您的实际密码,即md5($password);

  • 然后交叉检查两者,我认为它可能会有所不同,有时如果您的密码列长度较小,则无法将实际加密值插入数据库,在这种情况下,它将修剪值和插入。

另一种方法