php登录总是挑选其他

时间:2016-03-15 03:52:06

标签: php html

在我的登录检查页面中,即使文本正确,也始终转到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");}
?>

我做错了什么?

3 个答案:

答案 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."' ");