본문 바로가기

개발과제

[노말틱 모의 해킹 취업반 2주차 개발과제 (1)] 로그인 기능 하는 페이지 만들기

갑자기 난이도가 확 증가한 기분인데 기분 탓이겠죠.

로그인이라.. 일단 작업 플로우라고 하죠 흐름도를 간단하게 적어 봅시다.

 

일단 데이터 베이스에 로그인할 아이디와 비밀번호 계정이 적혀 있어야 되겠죠?

그리고 이 로그인 정보가 맞는지 안 맞는지 확인하는 과정이 있어야 되겠죠

그럼 ID 와 PW를 작성하고 로그인하기 버튼을 누르면 알아서 저  과정이 실행되게끔 만들면 되겠네요!

 

그리고 이 과정에 데이터를 주거나 받을 때 정보는 중요하니 POST방식으로 주고받으면 되겠네요

PW을 암호화 한다는 거랑 ID 중복 확인하는 것은 나중에 회원 가입 기능 만들 때 하도록 하죠!

 

간단하게 그림으로 표현하면

 

못 그려도 봐줘요

 

이게 정답은 아닙니다! 제가 이렇게 만들 것이며 만약 중간에 틀리거나 수정할 부분 있으면

그때 수정하도록 하겠습니다.

.

.

.

.

.

.

우선 로그인 페이지를 간단하게 만들어 봅시다.

총코드는 아래쪽에 있습니다

 

 

참고는

https://www.youtube.com/watch?v=uIemIQzSO0U&list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&index=10 

여기서 했습니다!

.

.

.

버튼은 submit형식

글은 text방식

 이 둘을 묶어서 form형식으로 만들겠습니다.

 

우선  login.php가 필요하겠죠?

아 그리고 로그인하면 나타나게 되는 페이지도 간단하게 만들겠습니다.

 

#sudo touch login.php

#sudo touch process_login.php

 

HappyHacking 치곤 너무 개발이네요

 

그리고.. form 함수와 input 함수 이용해 작성해 봅시다.

저는 이렇게 했습니다

 

간단하게..

 

form함수에 action은 버튼(submit) 눌렀을 때 어느 파일 실행하는지 말하는 것이고

메서드는 POST방식으로 보내는 것입니다!

한 번 잘되나 실행해보겠습니다

localhost/login.php

 

 

깔끔

그리고 제출 누르면?

 

제 머릿속

 

텅 비었네요 그렇죠 아무것도 작성 안 했으니깐요.

이제 성공하면 로그인 성공 나오게 하고 실패면 실패라고 나오게 합시다.

.

.

그리고 process_login을 작성하러 가겠습니다.

 

 

작성하기 전에 저희는 로그인 정보만 따로 데이터베이스를 만들 거예요

아무래도 중요하니깐요!

 

저는 phpmyadmin을 이용하겠습니다

mysql 통해 명령어 입력 하셔도 상관없어요.

 

데이터베이스 이름을 LOGIN_INFO라 하겠습니다

 

너무 이름 길면 적기가 귀찮거든요

테이블도 LOGIN_INFO, 칼럼은 index용 하나, ID하나, PW 하나 3칸 만들겠습니다.

 

부족하면 나중에 추가하면 되죠!

 

배가 고프네요 지금 저녁인데 쩝

 

A.l은 자동으로 1씩 증가하면서 저장하는 것입니다.

 

좋습니다 이제 process_login.php로 넘어가죠!

 

만약 이 파일로 잘 전송이 됐는지 궁금하시면 var_dump($_post); 코딩하셔서 확인하시면 됩니다.

 

<?php

 var_dump($_POST);

?>

 

 

저는 잘 전송됬네요

 

 

다음에 sql 문을 작성해서 로그인 정보랑 제가 입력한 정보랑 같은지 아닌지 코딩합시다.

 

우선 mysql와 연결합시다.

 

 

password에 자신이 설정한 거 작성하시면 되요! ex) "1234"

 

user에다가 자신의 데이터베이스 계정 적으시면 됩니다. root 시면 "root" 적으시면 돼요

 

 

 

물론 이렇게 한 php에다가 적는 것은 보안상 위험합니다! 지금은 머리가 복잡해질 테니 그냥 넘어가고요

나중에 아예 이런 중요한 정보를 다른 php파일을 만들고 사용자만 쓸 수 있게 설정하겠습니다.

꽤나 뒤예요. 지금은 과제에 집중하죠.

 

 

 

그리고 간단하게 오류가 발생하면 왜 안 되는지 까지 출력하게 했습니다.

 

 

오류나면 고쳐야 되잖아요

 

 

그다음으로 저희가 post로 받아 온 걸 따로 변수에다가 넣겠습니다

$login_id = $_POST['id'];

$login_pw = $_POST['pw'];

 

 

 

그리고 sql 문으로 저런 정보가 있는지 찾는 질문을 작성합니다!

$sql = "SELECT *

            FROM LOGIN_INFO

            WHERE id='$login_id' AND pw = '$login_pw' ";

 

그러고 난 뒤에 이 질문을 보내겠습니다.

 

mysqli_query($conn,$sql);

 

 

그리고 이 결과를 따로 저장을 하겠습니다.

 

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

 

아이 즐겁다

 

그리고 if else문으로 이 결괏값이 있으면 로그인 성공 없으면 로그인 실패로 하면 되겠죠?

 

이때 저는 mysql_num_rows() 함수를 사용했습니다.

 

mysql_num_rows() : 쿼리 결과 값의 행 수를 가져옵니다.

 

쉽네요!

 

이제 총 작성문을 보여드리면

 

 

<?php
    $host = "localhost";
    $username = "user2";
    $password = "password";
    $dbname = "LOGIN_INFO";
    //데이터베이스 연결
    $conn = mysqli_connect($host,$username,$password,$dbname);
    //오류시 종료
    if(mysqli_connect_errno()) {
        die("데이터 베이스 오류: ". mysqli_connect_error());
    }
    //POST로 전달된 정보 받기
    $login_id = $_POST['id'];
    $login_pw = $_POST['pw'];

    //쿼리문 작성
    $sql = "SELECT * FROM LOGIN_INFO WHERE id='$login_id' AND pw = '$login_pw'";
    //쿼리 실행
    $result = mysqli_query($conn, $sql);

    //쿼리 실행 결과 확인
    if(mysqli_num_rows($result) > 0 ) { 
        //로그인 성공
        echo "로그인 성공";
    }
    else {
        //로그인 실패
        echo "아이디 또는 비밀번호가 일치하지 않습니다.";
    }
?>

 

 

그리고 데이터 베이스에다가 아무 로그인 정보 저장하겠습니다

 

 

대충 이렇게 하겠습니다

 

심플

 

그리고 localhost/login.php에서 해보겠습니다

 

 

제발 한 번에.. 되라..!!!

 

제출!

 

어? 왜 되지?

 

깔끔하네요! 약간 의구심이 있지만 그래도 일단 성공했으니 넘어가겠습니다!!

다음에 회원가입 만들 때 더욱 보완을 하겠습니다.

.

.

.

.

이로써 글을 마치겠습니다.