具有用户名和电子邮件的PDO登录系统

时间:2018-03-15 21:49:04

标签: php pdo login

我试图弄清楚如何使用PDO登录我的网站,一旦他们登录就给用户选择他们的电子邮件地址或用户名,我检查了一些其他答案,但它没有&# 39;似乎对我有用。

这是代码

<?php

if(isset($_POST['username']) || isset($_POST['password'])){
    if(!$_POST['username'] || !$_POST['password']){
        $error = "Please Enter your Username and Password";
    }

所以问题源于下面,我尝试在$ query上添加一个OR,因为我从这里的其他帖子中看到了这个,但这样做允许用户通过电子邮件登录但不能使用用户名,如果我删除& #34; OR user_email&#34;他们可以通过用户名登录,但不能通过电子邮件登录。

if(!$error){
            //No errors - lets get the users account
            $query = "SELECT * FROM users WHERE user_name OR user_email = :username";

            $result = $DBH->prepare($query);
            $result->bindParam(':username', $_POST['username']);
            $result->execute();

            $row = $result->fetch(PDO::FETCH_ASSOC);

            if($row){
                //User found - let’s check the password
                if(password_verify($_POST['password'], $row['user_password'])){
                    $_SESSION['loggedin'] = true;
                    $_SESSION['userData'] = $row;

                echo "<script> window.location.assign('index.php?p=viewprofile'); </script>";
            }else{
                $error = "Username/Password Incorrect";
            }

        }else{
            $error = "Username/Password Incorrect";
        }

    }
}

?>

1 个答案:

答案 0 :(得分:0)

您的SQL查询错误:

$query = "SELECT * FROM users WHERE user_name = :username OR user_email = :username";

您忘记将列user_name与用户输入

进行比较
相关问题