2012-09-19 206 views
0

我只是搞亂PHP和MySql來學習東西......直到現在一切正常,但現在我只是找不到任何解決方案。 該基地是一個非常簡單的登錄系統。現在我試圖從名爲'login'的數據庫中讀取用戶名和密碼以及'userTBL'表和'用戶名'和'密碼'字段。MySql不會返回任何東西

<?php 
    session_start(); 

    mysql_connect ('localhost', 'root', 'root') or die('NO MYSQL CONNECTION!'); 
    mysql_select_db('login'); 

    if ($_GET['login']) { 
     $username = ($_POST['username']); 
     $password = ($_POST['password']); 

     $tmp = mysql_query("SELECT * FROM `user`"); 

     $data = mysql_fetch_array($tmp); 

     if($tmp) { 
      echo 'FULL<br />'; 
     } else { 
      echo 'EMPTY<br />'; 
     } 

     $_SESSION['username'] = $data['username']; 
     $_SESSION['password'] = $data['password']; 

     if ($username == $_SESSION['username'] && $password == $_SESSION['password']) { 
      $_SESSION['loggedin'] = true; 
      header("Location: protected.php"); 
      exit; 
     } else echo "Wrong details!<br />"; 
    } 
    if ($_SESSION['loggedin'] == true) { 
     header("Location: protected.php"); 
    } 
?> 

這似乎是數據庫不會返回任何東西,但爲什麼?!?!

感謝您的幫助!

+1

用'mysql_error()'檢查錯誤 – Tchoupi

+0

它看起來像數據庫不返回任何東西嗎?此外,'mysql_query()'返回'SELECT'查詢的資源;如果查詢中沒有錯誤,即使對於返回的零行,「$ tmp」也將始終爲真。另外,不要使用'mysql'擴展名,因爲它被棄用,並且不鼓勵使用它。 – lanzz

+1

你說表名是'userTBL',但有''SELECT * FROM user'' – Musa

回答

0
<?php 
    session_start(); 

    mysql_connect ('localhost', 'root', 'root') or die('NO MYSQL CONNECTION!'); 
    mysql_select_db('login'); 

    if ($_GET['login']) { 
     $username = htmlspecialchars($_POST['username']); 
     $password = htmlspecialchars($_POST['password']); 

     $tmp = mysql_query('SELECT * FROM `userTBL` WHERE `user` = "'.$username.'"'); 

     while ($data = mysql_fetch_array($tmp)) 
     { 
      $_SESSION['username'] = $username; 
      $_SESSION['password'] = $data['password']; 

     if ($password == $_SESSION['password']) { 
      $_SESSION['loggedin'] = true; 
      header("Location: protected.php"); 
      exit; 
     } else echo "Wrong details!<br />"; 
     } 
    } 
    if ($_SESSION['loggedin'] == true) { 
     header("Location: protected.php"); 
    } 
?> 

另外:使用salt + hash將密碼存儲在數據庫中。

1

你提到你的表被稱爲'userTBL',但你正在查詢表'user'。將你的查詢改爲:$ tmp = mysql_query(「SELECT * FROM userTBL WHERE username = {$ username} AND password = {$ password}」); 'WHERE'子句將確保查詢只返回與輸入到表單中的用戶名和密碼匹配的數據。