无法从数据库获取我的登录页面的数据:(

时间:2019-09-27 07:22:14

标签: php html database phpmyadmin

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

我是该领域的初学者,并且从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>

connect2.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

的屏幕截图

2 个答案:

答案 0 :(得分:2)

作为快速解决方案,请在用户名和密码变量两边加上引号:

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

一些改进此代码的技巧:

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

此外,您在第一个条件中遇到了错误,您使用了|(这是按位运算符),而不是||(这是逻辑OR运算符)

答案 1 :(得分:-2)

我认为

"SELECT * FROM account WHERE username = $username AND password = $password "

应该是

"SELECT * FROM account WHERE username = \"$username\" AND password =\"$password\""