我试图弄清楚如何使用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";
}
}
}
?>
答案 0 :(得分:0)
您的SQL查询错误:
$query = "SELECT * FROM users WHERE user_name = :username OR user_email = :username";
您忘记将列user_name
与用户输入