2012-09-19 162 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'子句将确保查询只返回与输入到表单中的用户名和密码匹配的数据。