我有一个用户名/数据库,我想在后端通过 PHP 登录 - 所以我创建了 2 个文件 - 一个名为 login.php,后者名为 process.php -
这是它们的代码 -
登录.php:
<form action="process.php" method="POST">
username: <input type="text" name="username"/></br>
password: <input type="password" name="password"/>
<input type="submit" value="Login"/>
</form>
进程.php:
<?php
$dbc = mysqli_connect('localhost','root','semen1985*','forum');
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM members WHERE (Email='$username' AND password='$password')'";
$result = mysqli_query($dbc,$query);
if (empty($_POST['password'])) {
$error[] = 'Please Enter Your Password ';
}
if(!$result){
echo 'Query Failed ';
}
if ($result==1){
echo 'Correct Password!!!';
} else {
echo "Wrong Username and/or Password!";
}
?>
无论如何,我似乎不断得到以下结果 - Query Failed Wrong Username and/or Password!
这甚至在我尝试多次正确输入电子邮件/用户名(相同的东西)和密码之后...你们中的任何人都知道问题是什么或者我如何修复这个简单的代码吗?
最佳答案
您的查询有误
$query = "SELECT * FROM members WHERE (Email='$username' AND password='$password')'";
此查询在导致问题的字符串末尾有一个额外的单引号。
$query = "SELECT * FROM members WHERE (Email='$username' AND password='$password')";
请记住,这是一种不安全的创建查询的方式。您应该考虑使用参数进行查询。我对 mysqli 不够熟悉,无法举个例子,但是对于 PDO,你会做这样的事情:
$sth = $dbh->prepare("SELECT * FROM members WHERE Email=:username AND password=:password");
$sth->bindParam(":username",$username,PDO::PARAM_STR);
$sth->bindParam(":password",$password,PDO::PARAM_STR);
$sth->execute();
关于php - 用户名和通过mysql数据库登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20363211/