首页 > 解决方案 > 无法从我的登录页面的数据库中获取数据:(

问题描述

我正在尝试从数据库中为我的登录页面获取数据,但似乎无法这样做。它一直告诉我我的用户名或密码错误。

我是该领域的初学者,并从 youtube 获得了我的代码。

form1.html

<!DOCTYPE html>
<html>
<head>
 <title>Login Site</title>
</head>
<body>
<form method="POST" action="connect2.php">
Username : <input type="text" name="username"><br><br>
Password : <input type="password" name="password"><br>
<input type="submit" value="Login" name="submit">
</form>
</body>
</html>

连接2.php

<?php
$con = mysqli_connect("localhost", "root", "") or die("Failed to connect to MySQL."); 
mysqli_select_db($con, "abc") or die("Database does not exist."); 
//require ('sql_connect.php');
if (isset($_POST['submit'])){
    $username=mysqli_escape_string($_POST['username']);
    $password=mysqli_escape_string($_POST['password']);
    if (!$_POST['username'] | !$_POST['password']) {
        echo ("<SCRIPT LANGUAGE='JavaScript'>
            window.alert('You did not complete all of the required fields')
            window.location.href='form1.html'
        </SCRIPT>");
        exit();
    }
    $sql= mysqli_query("SELECT * 
                        FROM `account` 
                        WHERE username = $username 
                        AND password = $password ");
    if(mysqli_num_rows($sql) > 0) {
        echo ("<SCRIPT LANGUAGE='JavaScript'>
            window.alert('Login Succesfully!.')
            window.location.href='form1.html'
        </SCRIPT>");
        exit();
    }else{
        echo ("<SCRIPT LANGUAGE='JavaScript'>
            window.alert('Wrong username or password. Please re-enter.')
            window.location.href='form1.html'
        </SCRIPT>");
        exit();
    }
}else{
}
?>

我认为 PHP 编码有问题,因为我不断收到“错误的用户名和密码”消息。

更新:我的数据库截图https://imgur.com/a/wPWdHDc

标签: phphtmldatabasephpmyadmin

解决方案


作为快速修复,在用户名和密码变量周围加上引号:

SELECT * FROM `account` WHERE username = '$username' AND password = '$password'

改进此代码的一些提示:

  • 使用准备好的语句来避免 SQL 注入
  • 不要以纯文本形式存储密码,对其进行哈希处理(加盐)

此外,您的第一个条件有错误,您使用|的是位运算符,而不是||逻辑 OR 运算符


推荐阅读