본문 바로가기
웹 해킹

(Normaltic 스터디 6기)1주차 과제 - 간단 로그인 페이지 만들기( HTML, CSS, JS, PHP)

by kk-nic 2024. 4. 23.

DB 연동 X

id: admin / pw: admin1234 로 로그인 성공 될수 있도록 구현 (그 외는 로그인 불가) 

CSS 로 꾸며봤지만, 반응형으로는 만들지 못했습니다. (추후 반응형으로 꾸밀 예정) 

 

완성된 페이지

 

전체모습

 

CSS 가 아직 익숙치 않아서, 기기별로  UI가 달리집니다...

코딩을 MacBook M1 에서 했는데, 데스크탑에서 같은 코드를 돌리면 각 요소들의 배치가 달라집니다.. 

추후에 반응형으로 코딩 예정이니, 참고해서 봐주세요

 

 

 

로그인실패 시 Alert
id / pw 미입력 후 로그인
id 만 입력 후(pw 미입력) 로그
admin / admin1234 입력 후 로그인 성공 Alert

 

성공 Alert 확인 후 회원페이지로 이

 

회원전용 페이지에서 로그아웃 클릭후 Alert

이후 확인 버튼 누르면 index.html 로 이동합니다.

 

<!-- index.html  -->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>로그인페이지</title>
  <link rel="stylesheet" href="main.css">
  <script defer src="main.js"></script>
 
</head>
<body>
<div class="login-entire-area" >
  <h1 class="login-h1">Login</h1>

  <form method="post" name="login" id="login-form" action="login_check.php" autocomplete="off">
    <input type="text" name="id" id="id" placeholder="Email"/> <br>
    <input type="password" name="pw" id="pw" placeholder="Password"/> <br>
    <button id="btn">로그인</button>
  </form>

  <div class="find-area">
    <div class="a1"><a href="#">아이디 찾기</a></div>
    <div class="a2"><a href="#">비밀번호 찾기</a></div>
  </div>

</div>

<div class="new-sign-up">
  <br>
  <h4>아직 회원이 아니신가요?</h4><br>
  <p>지금 회원가입을 하시면<br> 다양하고 특별한 혜택이 준비되어있습니다.</p>
  <div  class="as"><a href="#">회원가입</a></div>
</div>

</body>
</html>

 

 
/* main.css */
*{
  padding: 0;
  margin: 0;
  border: none;
}
.login-entire-area{
  /* background-color: aquamarine; */
  position: relative;
  width: 25vw;
  height: 45vh;
  box-sizing: border-box;
  margin: auto;
  border-radius: 2%;
  top: 60px;
  text-align: center;

}
.login-h1 {
  font-size: 24px;
  line-height: 70px;
}
#login-form > input::placeholder{
  color: #D2D2D2;
}

#id {
  width: 80%;
  height: 38px;
  padding: 0 10px;
  border-radius: 6px;
  background-color: #F8F8F8;
  box-sizing: border-box;
  margin-bottom: 16px;
}
#pw {
  background-color: #F8F8F8;
  width: 80%;
  height: 38px;
  padding: 0 10px;
  box-sizing: border-box;
  border-radius: 6px;
}
#btn {
  background-color: bisque;
  width: 80%;
  height: 38px;
  margin-top : 20px;
  border-radius: 6px;
}
.find-area{
  /* background-color: aqua; */
  display: flex;
  justify-content: center;
  padding: 20px;
}

.a1{
  font-size: 12px;
  position: relative;
  margin-left: 7px;
  padding-right: 0.5em;
  border-right: 1px solid lightgray;
  margin-right: 0.5em;
}

.a2{
  font-size: 12px;
  position: relative;

}
a:link {
  color : black;
  text-decoration-line: none;
}
.new-sign-up {
  background-color:#F8F8F8;
  position: relative;
  width: 30vw;
  height: 20vh;
  box-sizing: border-box;
  margin: auto;
  border-radius: 0.5%;
  box-shadow: rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px;
 
}
.new-sign-up > * {
  text-align: center;
  margin: auto;
}
.as {
  width: 100px;
  padding: 5px;
  border: 1px solid lightgray;
  border-radius: 0.8%;
  font-size: small;
}
// main.js
document.addEventListener('DOMContentLoaded', () =>{
  const id = document.querySelector('#id')
  const pw = document.querySelector('#pw')
  const btn = document.querySelector('#btn')

  btn.addEventListener('click', (e) => {
      e.preventDefault()

      if(id.value == ''){
          alert('아이디를 입력하세요.')
          id.focus()
          return false;
      }

      if(pw.value == ''){
          alert('패스워드 입력하세요.')
          pw.focus()
          return false;
      }

      document.login_form.submit()
     
  })
})

 

<!-- login_chenk.php -->
<?php
$id = (isset($_POST['id']) && $_POST['id']!='') ? $_POST['id'] : '';
$pw = (isset($_POST['pw']) && $_POST['pw']!='') ? $_POST['pw'] : '';

if($id == ''){  //id 미입력시
    echo '
    <script>
        alert("아이디를 입력하세요..")
        history.go(-1)
    </script>
    ';
    exit;
}

if($pw == ''){ //password 미입력시
    echo '
    <script>
        alert("비밀번호를 입력하세요.")
        history.go(-1)
    </script>
    ';
    exit;
}

if($id == 'admin' &&  $pw == 'admin1234'){
    session_start();
    $_SESSION['ss_id'] = $id;
     echo '<script>
     alert("로그인에 성공했습니다.");
     self.location.href="member.php"; //회원전용 페이지로
     </script>
     ';
} else {
    echo '<script>
     alert("로그인 실패.");
     self.location.href="index.html"; //회원전용 페이지로
     </script>
     ';
}

?>
 
<!-- member.php -->
<?php
session_start();
if(!isset($_SESSION["ss_id"]) || $_SESSION["ss_id"] == ""){
    echo "
     <script>
     alert('여기는 회원 전용 페이지 입니다. 로그인 후 접근이 가능합니다.');
     self.location.href='index.html';
     </script>
    ";
    exit;
}
?>

<p>회원전용 페이지입니다.</p>
<a href="logout.php">로그아웃</a>

 

<!-- logout.php -->
<?php
    session_start();
    session_unset();
    session_destroy();
?>
<script>
    alert("로그아웃되었습니다.");
    self.location.href="index.html";
</script>