2012-09-19 7 views
0

저는 PHP와 MySQL을 사용하여 일을 배우고 있습니다. 지금까지 모든 것이 잘되었지만 지금은 솔루션을 찾을 수 없습니다. 베이스는 매우 간단한 로그인 시스템입니다. 이제 'userTBL'테이블과 'username'및 'password'테이블의 'login'데이터베이스에서 사용자 이름과 암호를 읽으려고했습니다.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 질의를위한 자원을 반환한다. 쿼리에 에러가 없다면 반환 된 행이 0 인 경우에도 항상 '$ tmp'가 true입니다. 또한,'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'이라고했지만 '사용자'테이블을 쿼리하고 있다고 말씀하셨습니다. 다음과 같이 쿼리를 변경하십시오. $ tmp = mysql_query ("SELECT * FROM userTBL WHERE username = {$ username} AND password = {$ password}"); 'WHERE'절은 쿼리가 폼에 입력 한 사용자 이름과 암호와 일치하는 데이터 만 반환하도록합니다.

관련 문제