基本上,当我在表单上按下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");
}
.
.
.