2017-11-24 2 views
-5

내 웹 사이트의 로그인 작업 중입니다. 로그인 할 때 사용자가 이미 데이터베이스에 있는지 확인하지 않습니다. 등록하지 않아도 누구나 로그인 할 수 있습니다.등록되지 않은 사용자는 누구나 로그인 할 수 있습니다. (PHP)

이것은 로그인 코드입니다. 사용자 계정이 데이터베이스에 존재하는 경우

<?php 


    //database details 
     $servername = "localhost"; 
     $username = "myname"; 
     $password = "******"; 
     $dbname = "mydb"; 


     // Create connection 
     $conn = mysqli_connect($servername, $username, $password, $dbname); 
     session_start();   

     if(isset($_POST['email'])) 

    { 
     $email = $_POST ['email']; 
     $password =$_POST ['password']; 


     $query = "SELECT * FROM Users WHERE Email='$email' AND Password='$password'"; 


     $result = mysqli_query($conn, $query); 





     if($result==1) 
     { 

      header('Location: profile.php'); 
      exit(); 
     } 

     else 
     { 

     header('Location: failedlogin.html'); 
     exit(); 
     } 


    } 

?>

+4

1. SQL 주입. 2. 평문 암호를 DB에 저장하지 마십시오! 3.'$ result'는 행의 수가 아니라'true/false'를 반환합니다. – panther

+4

mysqli_query()는 성공하면 true를 리턴한다. 쿼리에 오류가 없음을 의미합니다. 또한이 코드가 라이브 서버에 없기를 바랍니다. SQL injection이 일어나기를 기다리고 있습니다 – Akintunde007

+2

또한 비밀번호를 저장하지 마십시오. 당신은'password_hash'를 사용할 수 있습니다 – Eddie

답변

0

코드는 결코 확인하지 않습니다. 쿼리가 오류없이 실행되었는지 여부 만 확인합니다. 이 작업 (안된) :

$query = "SELECT * FROM Users WHERE Email='$email' AND Password='$password' LIMIT 1"; 
if($result = mysqli_query($conn, $query)){ 

    if(mysqli_num_rows($result) > 0){ 

     //user account exists 
     $member = mysqli_fetch_array($result, MYSQLI_ASSOC); 
     $email = $member["Email"]; 

    } else { 

     //user account does not exist 

    } 

} else { 

    echo "Error executing database query."; 

}