2015-12-23 55 views
0

我最近在做一個項目 - 一個在線測驗,所以我決定做一個註冊/登錄系統。我在登錄部分遇到了一些問題,所以我決定從頭開始做所有事情,但問題仍然存在。簡單的PHP/MySQL登錄腳本 - 總是失敗

註冊工作正常,我設法註冊10個用戶沒有問題,但是當我嘗試登錄它總是顯示 - 錯誤的登錄名或密碼!儘管一切都是正確的輸入,並且我的數據庫中沒有重複的記錄。

這裏是連接到數據庫:

<?php 
$hostname = "localhost"; 
$username = "user"; 
$pass = "pass"; 
$db = "testdb"; 

$connect = mysqli_connect($hostname, $username, $pass) or die("Something went wrong!"); 

mysqli_select_db($connect, $db) or die("Couldn`t connect to database!"); 
?>` 

的login.php

<html> 
<head> 
<?php 
require ('db.php'); 

if(isset($_POST['login'])) 
{ 
    $login = mysqli_real_escape_string($connect, $_POST['login']); 
    $password = mysqli_real_escape_string($connect, $_POST['password']); 

    if($login == NULL || $password == NULL) 
    { 
     echo "All fields must be completed!"; 
     exit(); 
    } 

    else 
    { 
     $sql = "SELECT * FROM `users` WHERE `login` = '".$login."' AND `password` = '".$password."'"; 
     $result = mysqli_query($connect, $sql); 

     if($sql->num_rows > 0) 
     { 
      echo "Successfully logged in!"; 
     } 

     else 
     { 
      echo "Wrong login or password!"; 
     } 
    } 
} 
?> 
</head> 

<body> 
<div align="center"> 
<h1>Login</h1> 
</div> 

<form action="login.php" method="post" align="center"> 
<input name="login" type="text" placeholder="Login"><br><br> 
<input name="password" type="password" placeholder="Password"><br><br> 

<input name="login" type="submit" value="Login"> 
</form> 

</body> 
</html> 

我很絕望,我一直在尋找了幾天的解決方案!我真的不知道爲什麼會發生這種情況。我將不勝感激任何幫助!

回答

1

你的提交按鈕具有相同的名稱作爲用戶名外地。

<input name="login" type="submit" value="Login"> 

將其改爲別的。

如:

<input name="loginBtn" type="submit" value="Login"> 

,改變

if($sql->num_rows > 0) 

if($result->num_rows > 0) 
+0

它的工作!!!非常感謝你!Omg!我永遠不會給同一個名稱按鈕和字段:) – Max775

+0

@ Max775沒有probs,請務必投票最好的答案和所有最好的給你:) –

+1

@DanyalSandeelo嘿,對不起,我沒有給你注意$ sql-> num_rows中的缺陷,但如果我記得正確的話,你的答案是數($結果)。在你編輯你的答案之前:) –

1

$sql是字符串,你需要在的resultSet

變化

if($sql->num_rows > 0) 

進行檢查,以

if($result->num_rows > 0) 
+0

非常感謝您! – Max775

+0

我希望我可以標記兩個答案爲正確:( – Max775