PHP 로그인/로그아웃 구현하기

910·2021년 10월 17일
2

index.php

<?php
session_start();
if(!isset($_SESSION['username'])) {
    echo "<script>location.replace('login.php');</script>";            
}

else {
    $username = $_SESSION['username'];
    $name = $_SESSION['name'];
} 
?>
<body>
    <div class="base">
        <h2><?php echo "Hi, $username($name)";?></h2>
        <button type="button" class="btn" onclick="location.href='logout.php'">
            LOGOUT
        </button>
    </div>
</body>

세션을 확인해서 로그인이 되어있다면 유저의 아이디와 로그아웃 버튼을 보여주고
로그인이 되어있지 않다면 login.php로 이동합니다.

login.php

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="utf-8">
  <title>LOGIN</title>
</head>
<body>
  <form method="post" action="check_login.php" class="loginForm">
    <h2>Login</h2>
    <div class="idForm">
      <input type="text" name="id" class="id" placeholder="Username">
    </div>
    <div class="passForm">
      <input type="password" name="pw" class="pw" placeholder="Password">
    </div>
    <button type="submit" class="btn" onclick="button()">
      LOGIN
    </button>
    <div class="bottomText">
      <a href="#">Sign up</a>
    </div>
  </form>
</body>
</html>

check_login.php

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <title></title>
</head>
<body>
   <?php
   session_start();
   $host = 'localhost';
   $user = '';
   $pw = '';
   $db_name = '';
      $mysqli = new mysqli($host, $user, $pw, $db_name); //db 연결
      
      //login.php에서 입력받은 id, password
      $username = $_POST['id'];
      $userpass = $_POST['pw'];
      
      $q = "SELECT * FROM member WHERE id = '$username' AND pass = '$userpass'";
      $result = $mysqli->query($q);
      $row = $result->fetch_array(MYSQLI_ASSOC);
      
      //결과가 존재하면 세션 생성
      if ($row != null) {
         $_SESSION['username'] = $row['id'];
         $_SESSION['name'] = $row['name'];
         echo "<script>location.replace('index.php');</script>";
         exit;
      }
      
      //결과가 존재하지 않으면 로그인 실패
      if($row == null){
         echo "<script>alert('Invalid username or password')</script>";
         echo "<script>location.replace('login.php');</script>";
         exit;
      }
      ?>
   </body>

login.php에서 입력받은 id, passward을 쿼리문에 넣고 실행해 결과가 존재하면 로그인을 성공하고 세션을 생성한 뒤 index.php로 이동합니다.

결과가 존재하지 않으면 로그인 실패 알림창을 띄우고 다시 로그인 페이지로 이동합니다.

logout.php

<?php
session_start();
session_destroy();
?>
<script>
    alert("You've been logged out");
    location.replace('index.php');
</script>

세션을 삭제한 뒤 로그아웃 되었다는 알림을 띄우고 index.php로 이동합니다.


login.php

index.php (로그인 성공)

로그인 실패, 로그아웃

1개의 댓글

comment-user-thumbnail
2022년 1월 28일

오오 감사합니다..! 나중에 이걸 응용해서 회원가입도 한번 들어봐야겠어요...

답글 달기