简体   繁体   English

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

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

So basically, when I press login on my form, even if my username and password are correct in the input fields, I keep getting the invalid username or password error. 因此,基本上,当我在表单上按登录时,即使我的用户名和密码在输入字段中正确,我仍然会收到无效的用户名或密码错误。 I am unsure how to fix this, as everything looks correct in my code. 我不确定如何解决此问题,因为我的代码中的所有内容看起来都是正确的。 How would I fix this so I can log in? 我将如何解决此问题以便登录? Here is the code: 这是代码:

$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");
            }
        }
    }
}

Thank you for taking your time to help. 感谢您抽出宝贵的时间来帮助您。

Instead of this: 代替这个:

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

try this: 尝试这个:

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

You were most probably trying to fetch an invalid column $row['$username'] from the database. 您很可能试图从数据库中获取无效的列$row['$username']

Yes, as HawasKaPujaari say you were trying to fetch an invalid column. 是的,正如HawasKaPujaari所说,您正在尝试获取无效的列。

But also, I think you can have some problems with your session, you need to initialize, like this: 而且,我认为您的会话可能会遇到一些问题,您需要进行初始化,如下所示:

@session_start();

Just before this: 在此之前:

$_SESSION["reg"] = $regKey;

Good luck! 祝好运!

What is the need of if(condition inside while loop).? if(while循环内的条件)需要什么? Check your condition in sql query only. 仅在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");
}
.
.
.

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM