2016-03-15 39 views
0

在我的登录检查页面中,即使文本正确,它也会始终转到else语句。php登录始终挑选其他

登录页

<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> 

loginin确认页

<?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

可以确认'$ numrows'真的回来'1'? – roullie

+0

尝试回显'$ username'和'$ password'并手动将其与表中的数据进行比较 – Panda

+0

$ numrows = mysqli_num_rows($ q);基于这个你已经检查了条件!所以这里你的问题是$ numrows = mysqli_num_rows($ q);返回1 ??或者print_r($ _ POST);并检查你的数据库相同! –

回答

0

我认为mysqli_num_rows($q);没有返回1,尝试转储它并查看此输出,通过使用var_dump(mysqli_num_rows($q));或者它可能是它返回值超过1的情况,请尝试用$numrows >= 1替换$numrows == 1。 它必须在任何情况下工作,如果您的数据库工作正常!

+0

这是否解决了您的问题? – SKG

+0

应该在评论! –

+0

@ShashankShah它解决了OP的问题,请删除您的downvote来支持我以及OP,它会感激你! – SKG

-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."' "); 
+0

他们之间有什么区别? –

+0

那有什么问题? – SKG

+0

$ q = mysqli_query(“SELECT * FROM user WHERE username ='$ username'AND password ='$ password'”);将工作兄弟! –

-1
$q = mysqli_query("SELECT * FROM user WHERE username='$username' AND password='$password' "); 

mysqli_query()需要从mysqli_connect()$connection参数资源。

它必须是:

$q = mysqli_query($connection,"SELECT * FROM user WHERE username='$username' AND password='$password' "); 

还建议:

$numrows = mysqli_num_rows($q); 
if($numrows > 0) { 
// ... 
} 
+0

在仅建立一个连接的情况下不需要它,它会自动选择最后建立的连接! – SKG

+0

http://php.net/manual/en/mysqli.query.php是正确的文档! @SKG –

+0

你是否看到这个问题。他用“我”来使用mysqli。 – anovsiradj