2017-04-06 3 views
1

MYSQL을 사용하는 PHP 로그인 시스템이 Null 값으로 로그인하고 있습니다. 왜 이런 일이 일어나는 걸까요?PHP 로그인 시스템 - null 값 로그인

session_start(); 

$username = $_POST['username']; 
$password = $_POST['password']; 


mysql_connect("localhost" , "root" , ""); 
mysql_select_db("deirastaff"); 

$result = mysql_query("SELECT * FROM users WHERE username ='$username' and password = '$password' ") 

    or die("Login failed" .mysql_error()); 

$row = mysql_fetch_array($result); 

if ($row['username']==$username && $row['password']==$password) { 

    $_SESSION['username']=$username; 

    echo '<script type="text/javascript"> window.open("staff.php","_self");</script>'; 

    //header("location:staff.php"); 

    //echo "Login Successfull "."Welcome ".$row['username'];  

}else { 

    echo '<script type="text/javascript"> 
    window.alert("Login failed!"); 
    window.open("index.php","_self"); 
    </script>'; 

    //header("location:index.php"); 
    //echo "Login Failed !"; 
    break; 
} 
+0

mysql이 아닌 더 이상 사용되지 않는 mysqli를 사용해야합니다. 또한 불안정합니다. 또한 SQL injection을 막기 위해 mysqli_real_escape_string() 함수를 사용해야한다. I.E. $ username = mysqli_real_escape_string ($ _ POST [ 'username']; –

+0

모든 줄 앞에 4 칸을 추가하여 코드를 포맷하면 많은 청소기가 표시됩니다. – glaux

답변

1

MySQLi는 ...

사용하는 것이 좋습니다하지만 MySQL을 사용하려면 다음

if(isset($submit)) //name of your submit button 
{ 
    $result = mysql_query("SELECT * FROM users WHERE username ='$username' and password = '$password' ") or die("Login failed" .mysql_error()); 
    if(mysql_num_rows($rs)<1) 
    { 
     echo "Login Failed" ; 
    } 
    else 
    { 
     $_SESSION[username]=$username; 
    } 
} 
0

당신은 그냥 쿼리를 수행하기 전에 값을 확인할 수 있습니다 ..이 코드를 시도 .

if (!empty($row['username']) && !empty($row['password'])) { ... } 

null 값을 허용하지 않도록 사용자 이름과 암호 테이블을 설정할 수도 있습니다.