<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>로그인 페이지</title>
<script src="login.js"></script>
</head>
<body>
<h1>Login</h1>
<form action="login_ok.php" method="post" id="login_form" autocomplete="off">
<label for="user_id">아이디</label>
<input type="text" id="user_id" name="user_id" placeholder="아이디를 입력해 주세요.">
<br>
<label for="user_pw">비밀번호</label>
<input type="password" id="user_pw" name="user_pw" placeholder="비밀번호를 입력해 주세요.">
<br>
<button id="login_btn">로그인</button>
</form>
<a href="guest_page.php">회원전용 페이지</a>
</body>
</html>
<?php
$id=(isset($_POST["user_id"]) and $_POST["user_id"]!="")?$_POST["user_id"]:"";
$pw=(isset($_POST["user_pw"]) and $_POST["user_pw"]!="")?$_POST["user_pw"]:"";
if($id==""){
echo "
<script>
alert('아이디를 입력해 주세요.');
history.back();
</script>
";
exit;
}
if($pw==""){
echo "
<script>
alert('비밀번호를 입력해 주세요.');
history.back();
</script>
";
exit;
}
if($id=="guest" && $pw=="1234"){
session_start();
$_SESSION["ss_id"]=$id;
echo "
<script>
alert('로그인 성공');
location.href='./guest_page.php';
</script>";
}else{
echo "
<script>
alert('로그인 실패');
location.href='./index.php';
</script>";
}
로그인 실패
로그인 실패 후 로그인 페이지 이동
로그인 성공
회원전용 페이지
js를 따로 만들어 준 이유는 가독성과 나중에 유지 보수관리를 편하게 하기 위해서입니다.
script를 body위에서 사용했기 때문에 "login_ok.php" Dom이 로딩이 끝나기도 전에 script가 실행되면 오류가 날 수 있어서 이후에 script가 동작하는 것이 맞다고 생각하여 DOMContentLoaded를 사용하였습니다.
document.addEventListener("DOMContentLoaded",()=>{
const id=document.querySelector("#user_id");
const pw=document.querySelector("#user_pw");
const btn=document.querySelector("#login_btn");
btn.addEventListener("click",(e)=>{
e.preventDefault();
if(id.value==""){
alert("아이디를 입력해 주세요.");
id.focus();
return false;
}
if(pw.value==""){
alert("비밀번호를 입력해 주세요.");
pw.focus();
return false;
}
login_form.submit();
})
})
DOMContentLoaded Event - 출처 https://developer.mozilla.org/ko/docs/Web/API/Document/DOMContentLoaded_event
-HTML 문서가 완전히 구문 분석되고 이후 실행됩니다.
document.querySelector - 출처 https://developer.mozilla.org/ko/docs/Web/API/Document/querySelector
-Document.querySelector() 는 제공한 선택자 또는 선택자 뭉치와 일치하는 문서 내 첫 번째 Element를 반환합니다.
addEventListener() - 출처 https://developer.mozilla.org/ko/docs/Web/API/EventTarget/addEventListener
-addEventListener() 메서드는 지정한 유형의 이벤트를 대상이 수신할 때마다 호출할 함수를 설정합니다.
preventDefault() - 출처 https://developer.mozilla.org/ko/docs/Web/API/Event/preventDefault
-preventDefault() 메서드는 어떤 이벤트를 명시적으로 처리하지 않은 경우, 해당 이벤트에 대한 사용자의 기본 동작을 실행하지 않도록 지정합니다.
<?php
session_start();
if(!isset($_SESSION["ss_id"]) or $_SESSION["ss_id"]==""){
echo "
<script>
alert('여기는 회원전용 페이지입니다. 로그인 후 이용 가능합니다.^^');
location.href='./index.php';
</script>";
exit;
}
echo "<h1>게스트 페이지 입니다.<h1>";
?>
<a href="logout.php">로그아웃</a>
session이 존재 할 경우
<?php
session_start();
session_unset();
session_destroy();
echo "
<script>
alert('로그아웃 되었습니다. 로그인 페이지로 돌아갑니다.');
location.href='./index.php';
</script>";
?>
이것저것 만들려고 하다보니 의도하지않게 여러가지를 공부하면서 많이 배우게 되네요.
다음에는 회원가입을 만들어 보려고 하는데요.
그런데 생각해보니 DB도 해야되는거 같던데 허허..
너무 즐겁네요?
긴 글 봐주셔서 감사합니다^^.