2016-03-15 45 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