필요없는 목록/PHP
로그인, 로그아웃 만들어보기
비밀안
2023. 4. 19. 19:43
학원에서 배운 PHP 로그인 화면입니다.
배우면서 많이 안되는 부분이 있어서 답답했던적이 많았네요.
그래도 그덕에 학원 수업을 이해를 많이하게 된 것 같아요.

로그인.php코드
<main id="main" class="container">
<div class="login__inner">
<h2>로그인</h2>
<p>로그인을 하시면 게시글 및 댓글 작성이 가능합니다.<br>회원가입을 하면 로그인이 가능합니다.<br>admin@admin.com/1234</p>
<div class="login__form btStyle bmStyle">
<form action="loginSave.php" name="loginSave" method="post">
<fieldset>
<legend class="blind">로그인 영역</legend>
<div>
<label for="youEmail" class="blind required">이메일</label>
<input type="email" id="youEmail" name="youEmail" class="inputStyle" placeholder="이메일" required>
</div>
<div>
<label for="youPass" class="blind required">비밀번호</label>
<input type="password" id="youPass" name="youPass" class="inputStyle" placeholder="비밀번호" required>
</div>
<button type="submit" class="btnStyle2 mt20">로그인</button>
</fieldset>
</form>
</div>
<div class="login__footer">
<ul class="listStyle">
<li>회원가입을 하지 않았다면 회원가입을 먼저 해주세요! <a href="join.html">회원가입</a></li>
<li>아이디가 기억이 나지 않는다면! <a href="#">아이디 찾기</a></li>
<li>비밀번호가 기억이 나지 않는다면! <a href="#">비밀번호 찾기</a></li>
</ul>
</div>
</div>
</main>
코드설명
1.form이 중요하니간 form부터 보는게 좋을 것 같습니다.
2. form의 action에다가 경로를 입력하면 버튼 클릭시 그 경로로 이동을 합니다.
3. input에다가 내용을 입력하고 button을 클릭하면 form요소에 내용을 전달합니다.
(세션.php쪽입니다. 여기에는 데이터를 비교 후 세션에 전달합니다.)

(에러가 많이 뜬덕에 억지로 코드를 이해하게 되었어요.~~)
(아직도 못 고쳤네요.)
세션.php코드
<main id="main" class="container">
<div class="intro__inner center bmStyle">
<picture class="intro__images">
<source srcset="../assets/img/joinEnd01.png, ../assets/img/joinEnd01@2x.png 2x, ../assets/img/joinEnd01@3x.png 3x" />
<img src="../assets/img/joinEnd01.png" alt="회원가입 이미지">
</picture>
<?php
include "../connect/connect.php";
include "../connect/session.php";
$youEmail = $_POST['youEmail'];
$youPass = $_POST['youPass'];
// echo $youEmail, $youPass;
// 데이터 출력
function msg($alert){
echo "<p class='intro__text'>$alert</p>";
}
// 데이터 조회
$sql = "SELECT memberID, youEmail, youName, youPass FROM members WHERE youEmail = '$youEmail' AND youPass = '$youPass'";
$result = $connect -> query($sql);
if($result){
$count = $result -> num_rows;
if($count == 0){
msg("이메일 또는 비밀번호가 틀렸습니다. 다시 한번 확인해주세요!<br><div class=`intro__btn`><a href=`#`></a></div>");
}
else {
// 로그인 성공
$memberInfo = $result -> fetch_array(MYSQL_I_ASSOC);
// echo "<pre>";
// var_dump($memberInfo);
// echo "</pre>";
// 세션 생성
$_SESSION['memberID'] = $memberInfo['memberID'];
$_SESSION['youEmail'] = $memberInfo['youEmail'];
$_SESSION['youName'] = $memberInfo['youName'];
Header("Location: ../main/main.php");
}
}
?>
</div>
<!-- //intro__inner -->
</main>
<!-- //main -->
코드설명
1.$_POST는 전달받은 폼요소의 데이터를 $youEmail과 $youPass에 저장합니다.
2. $sql로 SELECT문으로 값들을 가져와서 저장합니다. 그리고 query문으로 데이터베이스 전달합니다.
3.if문으로 로그인이 실패 여부를 확인 합니다.
4.else문으로 로그인 성공여부를 확인합니다.
★세션은 다음과 같은 순서로 작동합니다:
- 세션 시작: PHP 코드로 session_start() 함수를 호출하여 세션을 시작합니다. 이 함수를 호출하면 세션 ID가 생성되고, 필요한 경우 서버에 세션 데이터를 저장하기 위한 공간이 할당됩니다.
- 세션 데이터 저장: PHP 코드에서 $_SESSION 배열을 사용하여 세션 데이터를 저장할 수 있습니다. 이 배열은 서버에 저장되는 세션 데이터를 나타냅니다. 예를 들어, $_SESSION['username'] = 'john'과 같이 사용자의 로그인 이름을 세션 데이터로 저장할 수 있습니다.
- 세션 데이터 사용: 세션 데이터는 다른 PHP 페이지에서도 사용할 수 있습니다. $_SESSION 배열을 사용하여 세션 데이터에 접근하고, 필요에 따라 값을 변경하거나 사용자 상태를 확인할 수 있습니다.
- 세션 종료: 세션을 더 이상 사용하지 않을 때에는 session_destroy() 함수를 호출하여 세션을 종료할 수 있습니다. 이 함수를 호출하면 세션 데이터가 삭제되고 세션 ID가 무효화됩니다.
로그아웃.php코드
<?php
include "../connect/session.php";
unset($_SESSION['memberID']);
unset($_SESSION['youEmail']);
unset($_SESSION['youName']);
Header("Location: ../main/main.php");
?>
코드설명
1. unset으로 세션에 저장된 변수를 제거합니다.
(PHP에서 unset() 함수는 변수나 배열 요소를 삭제하는 데 사용되는 내장 함수입니다. unset() 함수를 사용하여 변수나 배열 요소를 삭제하면 해당 변수나 배열 요소는 메모리에서 제거되어 사용할 수 없게 됩니다.)
