在我的登录检查页面中,即使文本正确,也始终转到else语句。
登录页面
<form method="post" action="login.php">
<input type="text" placeholder="username" name="username"><br>
<input type="password" placeholder="password" name="password"><br>
<input type="submit" value="Submit"></form>
</body>
</html>
登录检查页
<?php
session_start();
//connect to database
include("db.php");
$username = $_POST["username"];
$password = $_POST["password"];
$q = mysqli_query("SELECT * FROM user WHERE username='$username' AND password='$password' ");
//row count
$numrows = mysqli_num_rows($q);
if($numrows == 1){
while($rows = mysqli_fetch_assoc($q)){
$_SESSION["username"] = $row["username"];
$_SESSION["password"] = $row["password"];}header("location:check.php");}
//always going to this else statement
else
{header("location:wrong.php");}
?>
我做错了什么?
答案 0 :(得分:0)
我认为mysqli_num_rows($q);
没有返回1,尝试使用var_dump(mysqli_num_rows($q));
转储它并查看此输出,或者可能是它返回的值大于1,尝试替换{{1由$numrows == 1
提供。
如果你的数据库工作正常,它必须适用于任何一种情况!
答案 1 :(得分:-1)
$q = mysqli_query("SELECT * FROM user WHERE username='$username' AND password='$password' ");
mysqli_query()
需要来自$connection
的{{1}}参数资源。
必须是:
mysqli_connect()
我也建议:
$q = mysqli_query($connection,"SELECT * FROM user WHERE username='$username' AND password='$password' ");
答案 2 :(得分:-4)
我认为您没有正确地将密码/用户名传递给数据库,请尝试更改:
$q = mysqli_query("SELECT * FROM user WHERE username='$username' AND password='$password' ");
由:
$q = mysqli_query("SELECT * FROM user WHERE username='" . $username . "' AND password='".$password."' ");