2016-06-24 1 views
1

MYSQL 데이터베이스에서 사용자를 인증하려고합니다. 나는 매번 실패 할 많은 튜토리얼을 시도했다. 나는 아래 코드를 붙여 넣기를하고있다. 보안이나 SQL 인젝션에 대해서는 신경 쓰지 않는다. 나는이 일을 시작하려고 노력 중이므로 다음 요구 사항을 계속 수행 할 수 있습니다. 누구든지 좋은 php/html5 로그인 인증 자습서에 대한 링크가 있다면 공유하십시오. 나는 등록 양식을 쉽게 만들 수 있었지만이 로그인 양식은 정말로 나에게 어려움을주고있다. 모든php/html5 로그인 인증

$id =$_POST['Id']; 
$password =$_POST['password']; 
$accessdb = "SELECT * from UserData where Id ='$id' and password ='$password"; 
      $authenticate = mysqli_query($conn, $accessdb); 
        if (mysqli_num_rows($authenticate) == 1) { 
         session_start(); 
         $_SESSION['auth'] = 'true'; 
         header('location: Profile.php'); 
        } 
        else { 
         echo "Wrong log-in credentials"; 
        } 
+1

** 위험 ** : [방어벽] (http : // stackoverflow)이 필요한 [SQL 주입 공격] (http://bobby-tables.com/) ** **에 취약합니다. .com/questions/60174/best-way-to-prevent-sql-injection-in-php)을 사용하십시오. – Quentin

+1

** 위험 ** : "전혀 해싱하지 않음"은 [부적절한 해싱 알고리즘입니다] (http://php.net/manual/en/faq.passwords.php); 사용자의 비밀번호를 [주의해서] (https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet)해야합니다. – Quentin

+5

그는 보안 또는 SQL 인젝션에 신경 쓰지 않는다고 말했습니다. @Quentin –

답변

0

첫째, session_start()은에 액세스하려면 인증 된 사용자를하려는 페이지의 첫 번째 일이 있어야하고 모든 페이지에 있어야합니다.

는 그런 다음과 같이 쿼리 $accessdb를 해결해야합니다

$accessdb = "SELECT * FROM userdata WHERE id = {$id} AND password ='{$password}'"; 

NB : $id는 숫자입니다 있는지 확실하지 않습니다. 그렇지 않으면 {$id} 대신 '{$id}'을 입력하십시오.

+0

"우선, session_start()가 페이지의 첫 번째 항목이어야합니다."- 일반적으로 좋은 조언이지만 출력을 생성하는 기호가 없으므로 그 전에, 무의미한. – Quentin

+0

'$ accessdb = "SELECT * FROM userdata 어디에서 id = {$ id} AND password = '{$ password}'"; '- 그 변화는 무의미합니다. 표준 보간 규칙은 같은 결과를 나타냅니다. 당신이 한 유일한 중요한 일은 id 값 주위에'''을 제거하는 것입니다. id가 숫자가 아니라면 그것을 깨뜨릴 것입니다. – Quentin

+0

아, 일부 플랫폼에서는 테이블 이름이 대소 문자를 구분하므로 테이블 이름의 대소 문자를 변경했습니다. – Quentin

0
 $password =$_POST['password']; 
     $user = "SELECT * FROM UserData WHERE Id ='$id'"; 
     $authenticate = $conn->query($user); 
     $row = $authenticate->fetch_assoc(); 
     $hash_password = $row['password']; 
     $hash = password_verify($password, $hash_password); 
     if ($hash ==0) { 
      echo "Something went wrong!!"; 
      header('Location: LogIn.php'); 
      exit(); 
     } 
     else { 
     `enter code here`$accessdb = "SELECT * FROM UserData WHERE Id ='$id'              
     AND password = '$hash_password'"; 
      $authenticate = $conn->query($accessdb); 
       if (!$row = $authenticate->fetch_assoc()) { 
        echo "Your username is incorrect, Re-enter CREDENTIALS"; 
      } 
       else { 
        $_SESSION['id'] = $id; 
        header('Location: Profile.php'); 
       } 
     }