php - 用户名和通过mysql数据库登录

标签 php mysql database email authentication

我有一个用户名/数据库,我想在后端通过 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/

相关文章:

database - 如何将 .sql 文件导入我的 Heroku postgres 数据库?

database - 我应该将上传的文件名存储在数据库中吗?

php strtotime 返回 1970-01-01

php - 如何返回原始文本并保持其形状和结构?

php - 如何在 PHP 中将日期转换为美国格式?

php - 显示两个日期之间的记录

c# - 为标签系统设计数据库的最有效方法

php mysql插入查询有问题

mysql - 用MAX函数连接三张表,表结构有点复杂

Python:mysql.connector 和 SSL 出错,但适用于 pymysql.connect