갑자기 난이도가 확 증가한 기분인데 기분 탓이겠죠.
로그인이라.. 일단 작업 플로우라고 하죠 흐름도를 간단하게 적어 봅시다.
일단 데이터 베이스에 로그인할 아이디와 비밀번호 계정이 적혀 있어야 되겠죠?
그리고 이 로그인 정보가 맞는지 안 맞는지 확인하는 과정이 있어야 되겠죠
그럼 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
그리고.. 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와 연결합시다.
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에서 해보겠습니다
제출!
깔끔하네요! 약간 의구심이 있지만 그래도 일단 성공했으니 넘어가겠습니다!!
다음에 회원가입 만들 때 더욱 보완을 하겠습니다.
.
.
.
.
이로써 글을 마치겠습니다.
'개발과제' 카테고리의 다른 글
[노말틱 모의 해킹 취업반 2주차 개발과제 (3)] 로그아웃 만들기 (0) | 2023.04.06 |
---|---|
[노말틱 모의 해킹 취업반 2주차 개발과제 (2)] 메인 페이지 만들어두기 (0) | 2023.04.05 |
[노말틱 모의 해킹 취업반 1주차 개발과제 (4)] DB에 데이터를 넣고, 화면에 출력해보기 (4) | 2023.04.03 |
[노말틱 모의 해킹 취업반 1주차 개발과제 (3)] GET/POST 데이터 전달하기 (0) | 2023.04.02 |
[노말틱 모의 해킹 취업반 1주차 개발과제 (2)] Happy Hacking 문구가 출력되는 페이지 만들기 (0) | 2023.04.01 |