//index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>index</title>
</head>
<?php
session_start();
// 새로운 세션을 시작하거나, 기존의 세션을 다시 시작한다.
if(!isset($_SESSION['username'])){
//새로 만들어지거나 기존에 있던 세션이 username 변수를 포함하는지 확인한다.(login할 때 세션에 username이 포함)
//usrename 변수가 존재하지 않는다면 login.php로 넘어간다.
echo "<script>location.replace('login.php');</script>"
}
else{
$username = $_SESSION['username'];
$name = $_SESSION['name']
//생성이 되었다면 username 변수에 생성되어 있는 세션의 변수 user을 넣는다
//마찬가지로 name 변수에 생성되어 있는 세션의 변수 name을 넣는다.
}
?>
<body>
<div class = "base">
<h2><?php echo "hi, $username($name)";?></h2>
<buttton type = "button" class = "btn" onclick = "location.href='logout.php'">
LOGOUT
</button>
</div>
</body>
</html>
1주차에 index.html에 로그인 하기 링크가 있었다. 이를 누르면 index.php로 넘어가게 되는데, 만약 로그인이 되어있다면 아래와 같이 username, Logout button이 생성이 된다. 그렇지 않다면 login.php로 넘어가게 된다. logout button을 누르면 logout.php으로 이동하게 된다.
name에 관련된 column을 만들어 놓지 않아 admin뒤의 괄호에 비어있다. 수정이 필요하다.
//login.php
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LOGIN</title>
</head>
<body>
<form method = "post" action="check_login.php" class = "loginForm">
//폼데이터를 POST 형식으로 check_login.php로 전송하게 된다.
<h2>Login</h2>
<div class = "idForm">
<input type="text" name = "id" class="id" placeholder="Username">
</div>
<div class = "passForm">
<input type="text" 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>
login.php는 아래와 같이 ID, password를 받는다.
//login_check.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
session_start(); // 세션을 생성을 한다.
$host = 'localhost';
$user = 'root'; // DB에 접속하고자 하는 ID
$pw = 'password'; // ID의 패스워드
$db_name = 'test';// 접속하고자 하는 DB의 이름
$mysqli = new mysqli($host, $user, $pw, $db_name);
//DB 연결을 해준다.
//이때, host(IP를 뜻하는 거 같다), username,
//password, 사용하고자 하는 DB 이름이 필요하다.
$username = $_POST['id'];
$userpass = $_POST['pw'];
//login.php에서 받았던 id와 pw를 username, userpass라는 변수에 넣어준다.
$q = "SELECT * FROM member WHERE id = '$username' AND pw = '$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;
// 존재한다면 세션의 username, name에 id와 name을 넣어준다.
// 그리고 index.php로 넘어가고 현재 창은 종료한다.
}
if($row == null){
echo "<script>alert('Invalid username or password')</script>";
echo "<script>location.replace('login.php')</script>";
exit;
//실패를 한 경우 'Invalid username or password'라는 알림창을 출력한다.
//그리고 login.php로 되돌아가게 된다.
}
?>
</body>
</html>
로그인이 성공한다면 index.php로 넘어가고, 실패를 한다면 login.php로 넘어가게 된다.
//logout.php
<?php
session_start();
session_destroy(); //문자 그대로 세션을 없앤다. 여기서는 로그인된 id를 저장한 세션을 없앤다.
?>
<script>
alert("You've been logged out.");
location.replace('index.php');
</script>
이 페이지에 오게 되면 로그아웃이 되었다는 것을 알려준다.