登录PHP总是返回无效的用户名或密码,即使字段是正确的


Login PHP keeps returning invalid username or password even if the fields are correct?

基本上,当我在表单上按下login时,即使我的用户名和密码在输入字段中是正确的,我仍然会得到无效的用户名或密码错误。我不确定如何解决这个问题,因为在我的代码中一切看起来都是正确的。我该如何解决这个问题才能登录?下面是代码:

$servername = "localhost";
$username   = "root";
$password   = "root";
$dbname     = "users";
$mysqli = new mysqli($servername, $username, $password, $dbname);
if ($mysqli->connect_error)
{
    die("Connection failed: " . $mysqli->connect_error);
}
else
{
    if (isset($_POST["username"]) && isset($_POST["password"]))
    {
        $username = (string)$_POST["username"];
        $password = (string)$_POST["password"];
        $result = $mysqli->query("SELECT * FROM `users` WHERE `username`='$username'");
        while($row = $result->fetch_assoc())
        {
            if ($username == $row['$username'] && $password == $row['password'])
            {
                $regKey = $row['regKey'];
                $_SESSION["reg"] = $regKey;
                die("YOU DID IT");
            }
            else
            {
                $mysqli->close();
                die("Error, invalid username or password");
            }
        }
    }
}
谢谢你抽出时间来帮忙。

是的,HawasKaPujaari说你试图获取一个无效的列。

但是,我认为你的会话也可能有一些问题,你需要初始化,像这样:

@session_start();

在此之前:

$_SESSION["reg"] = $regKey;

祝你好运!

而不是:

if ($username == $row['$username'] && $password == $row['password'])

试试这个:

if ($username == $row['username'] && $password == $row['password'])

很可能试图从数据库中获取无效列$row['$username']

if(while循环中的条件)的需求是什么?只检查sql查询中的条件

.
.
.
$username = $_POST["username"];
$password = $_POST["password"];
$result = mysqli->query("SELECT * FROM users WHERE username='$username' AND password='$password'");
$CountResult=mysql_num_rows($result);
if($CountResult==1)
{
  while($row = $result->fetch_assoc())
  {
      $regKey = $row['regKey'];
      $_SESSION["reg"] = $regKey;
      die("YOU DID IT");
  }
}
else
{
   $mysqli->close();
   die("Error, invalid username or password");
}
.
.
.