๋ชจ์ ํดํน ์คํฐ๋ - 1์ฃผ์ฐจ ๊ณผ์ (๊ฐ์ด ๋ก๊ทธ์ธ ํ์ด์ง ์ ์)
์ ์ ์กฐ๊ฑด
- DB ์ฐ๊ฒฐ X - ํ๋์ฝ๋ฉ ๋ฐฉ์
- ID / PW == admin / admin1234 ์
๋ ฅ์ ๋ก๊ทธ์ธ
- ๋ก๊ทธ์ธ ํ์ด์ง ๊พธ๋ฏธ๊ธฐ (CSS / Bootstrap ์ด์ฉ)
- ์ถํ ์ํ๋๋๋ก ์ ์ฉ ๊ฐ๋ฅํ๋๋ก ํ๊ธฐ ์ํ์ฌ CSS๋ก ํ๋๋ถํฐ ์์ ์ฌ๋ฆฌ๋๊ฒ์ผ๋ก ์ ์ ์ฐ์ต.
๋์ ๊ณผ์
- ์ฒซ ํ๋ฉด์ธ http://192.168.xxx.xxx:1018/(index.php)์ ์ ์
- Login ํด๋ฆญ์ http://192.168.xxx.xxx:1018/login.php๋ก ์ด๋
- http://192.168.xxx.xxx:1018/login.php ์์ ์ฌ๋ฐ๋ฅธ ID/PW ์ ๋ ฅ์
- http://192.168.xxx.xxx:1018/home.php ๋ก ์ด๋ ํ์ฌ "Hello, user๋ช " ์ ์ถ๋ ฅ
์ฝ๋ ๋ชฉ๋ก
- inc/header.php : ๊ณตํต ํค๋
- index.php : ์ด๊ธฐ ํ๋ฉด
- login.php : ๋ก๊ทธ์ธ ํ๋ฉด
- login_proc.php : ๋ก๊ทธ์ธ ์ ๋ณด ํ์ธ
- home.php : ๋ก๊ทธ์ธ ์๋ฃ ํ๋ฉด
- css/style.css : ์ ์ฉํ CSS
inc/header.php
<p style='text-align:right'>
<?php
if(!session_id()){
session_start();
}
if(!isset($_SESSION['member_id'])){
?>
<a href="/login.php">Login</a>
<?php
}else{
?>
<a href="/index.php">Logout</a>
<?php
}
?>
</p>
์ด๊ธฐํ๋ฉด์์ ๋ก๊ทธ์ธ ์ฐฝ์ผ๋ก ๋์ด๊ฐ๊ฑฐ๋, ๋ก๊ทธ์ธ ์๋ฃ ์ฐฝ์์ ๋ก๊ทธ์์์ ํ๋ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ณํ๋ ๊ณตํต ํค๋
- if(!isset($_SESSION['member_id']))
- $_SESSION['member_id'] ์ ์ฌ๋ถ์ ๋ฐ๋ผ ํ๊ธฐํ ํค๋๋ฅผ ๋ค๋ฅด๊ฒ ์ค์
Index.php
<?php
session_start();
unset($_SESSION['member_id']);
?>
<!DOCTYPE html>
<html>
<head>
<title>LJY</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container">
<h1 class="spacing grad">Index</h1>
<?php require_once("inc/header.php"); ?>
<h2>Please, Login</h2>
<p>Click the Login</p>
</div>
</body>
</html>
- ์ฌ์ดํธ์ ์ฒซ ํ๋ฉด, unset($_SESSION['member_id']); ์ํ์ด๋ฏ๋ก inc/header.php ๋ก๋ถํฐ Login ํค๋๋ฅผ ๋ถ๋ฌ์ด
login.php
<!DOCTYPE html>
<html lang="en">
<head>
<meata charset="utf-8">
<title>Login Page</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="container">
<h1 class="shadow spacing grad">Gearvirus</h1>
<form method="POST" action="login_proc.php" autocomplete="off">
<br>
<label for="user_id">์์ด๋</label>
<input type="text" name="user_id" placeholder="User ID" autofocus required/>
<p>
<label for="user_pw">๋น๋ฐ๋ฒํธ</label>
<input type="password" name="user_pw" placeholder="User Password" required/>
<br>
<input type="submit" value="๋ก๊ทธ์ธ"/>
</form>
<br><br>
<footer class="footer">
<div class="footer-info">Login Test</div>
</footer>
</div>
</body>
</html>
- <form method="POST" action="login_proc.php" autocomplete="off">
- method="POST" : url์ ์ถ๋ ฅ์ ์ํ๊ธฐ ์ํด์ "POST" ์ด์ฉ
- action="login_proc.php" : action์ ํ์ผ์ ๋ค๋ฅธ ๊ณณ์์ ํ์ธ(action์ ์ง์ ๋์ด ์๋ login_proc.php ๋ก ์ ๋ณด ์ ๋ฌ)
- autocomplete="off" : ์์ด๋ ์ ๋ ฅ์ ์๋์์ฑ ๋ฐฉ์ง
- <input type="text" name="user_id" placeholder="User ID" autofocus required/>
- placeholder="User ID" : ๋ด์ฉ ์ ๋ ฅ ํํธ
- autofocus : ์น ๋ฌธ์๋ฅผ ๋ถ๋ฌ์ค์๋ง์, ํด๋น ํ ์คํธ ํ๋์ ์ ๋ ฅ ์ปค์๊ฐ ์์นํ๋๋ก ํจ.
- required : ํ์ ์ ๋ ฅ ํ๋ ์ง์ , ๋ฏธ ์ ๋ ฅ์ ์๋์ ๋ฌธ๊ตฌ ์ถ๋ ฅ
login_proc.php
<?php
$user_id = $_POST['user_id'];
$user_pw = $_POST['user_pw'];
$login_id = "admin";
$login_pw = "admin1234";
$is_pw = password_verify($user_pw, $login_pw);
if($user_id == $login_id && $user_pw == $login_pw){
session_start();
$_SESSION['member_id'] = $user_id;
header("Location: /home.php");
exit();
}else{
echo '<script>alert("๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๊ฑฐ๋ ์๋ชป ์
๋ ฅ"); history.back(-1)</script>';
}
?>
- if($user_id == $login_id && $user_pw == $login_pw)
- ๋ก๊ทธ์ธ ์์ด๋์ ๋น๋ฐ๋ฒํธ๊ฐ ๋ชจ๋ ๋ง์ ๊ฒฝ์ฐ, $_SESSION['member_id'] = $user_id; : ์ด๋ค ์ ์ ๊ฐ ๋ก๊ทธ์ธ ํ์๋์ง ํ์ ํ๊ธฐ ์ํจ
- header("Location: /home.php"); : home.php ๋ก ์ด๋
- ๋ณดํต์ header("Location: /home.php"); ๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
- ๋งค๋ฒ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ ์๋์ง๋ง, ์์ฒ๋ผ ์ฌ์ฉํ๋ฉด ์ ์์ ์ผ๋ก ๋์ํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์
- ๊ทธ๋ด๋๋ exit;๋ฅผ ํ์ค ์ถ๊ฐํด ์ฃผ๋ฉด๋จ
- exit();
- echo '<script>alert("๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๊ฑฐ๋ ์๋ชป ์
๋ ฅ"); history.back(-1)</script>';
- alert("๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๊ฑฐ๋ ์๋ชป ์ ๋ ฅ"); : ์์ด๋ or ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ ์๋จ์ ๊ฒฝ๊ณ ์ฐฝ ์ถ๋ ฅ
- history.back(-1) : ์ด์ ํ์ด์ง๋ก ์ด๋
- ' " " ' ์์ผ๋ก ์ ๋ ฅ (" ' ' ")๋ ๊ฐ๋ฅ ํ์ง๋ง ์๋ก ๊ตฌ๋ถ์ ์ง์ด ์ค์ผ ํจ
home.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Wellcome</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class ="container">
<h1 class="spacing grad">Home</h1>
<?php require_once("inc/header.php"); ?>
<?php
$name = $_SESSION['member_id'];
echo "Hello, " .$name;
?>
</div>
</body>
</html>
- ์ฌ์ดํธ์ ํ ํ๋ฉด,$_SESSION['member_id'] ๋ฅผ login_proc.php ๋ก ๋ถํฐ ๋ฐ์์จ ์ํ์ด๋ฏ๋ก inc/header.php ๋ก๋ถํฐ ใ ฃLogout ํค๋๋ฅผ ๋ถ๋ฌ์ด
- $name = $_SESSION['member_id']; : login_proc.php ์์ ๋ฐ์์จ ์ ๋ณด๋ฅผ ์ ์ฅ
- echo "Hello, " .$name;
- .$name; : ์ถ๋ ฅ์์๋ .$๋ณ์๋ช ์ผ๋ก ํ๊ธฐ
style.css
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
display: grid;
place-items: center;
height: 100vh;
}
.container {
display: flex;
flex-direction: column;
justify-content: space-around;
width: 500px;
margin: 10px auto;
padding: 10px;
border: 1px solid #000;
border-radius: 10px;
}
h1 {
padding: 10px;
background-color: #222;
color: #fff;
text-align: center;
}
.shadow {
text-shadow: 3px 3px 2px #111;
}
.spacing {
letter-spacing: 0.1em;
}
.grad {
background: linear-gradient(to right bottom, black, white);
}
input {
width: 100%;
padding: 5px;
border: none;
border-bottom: 1px solid #111;
outline: none;
font-size: 20px;
}
- * : ์ ์ฒด์ ์ ์ฉ
- .shadow : ํ
์คํธ์ ๊ทธ๋ฆผ์ ํจ๊ณผ๋ฅผ ์ถ๊ฐํ๋ ์์ฑ
- ๊ธฐ๋ณธํ text-shadow: none | <๊ฐ๋ก ๊ฑฐ๋ฆฌ> <์ธ๋ก ๊ฑฐ๋ฆฌ> <๋ฒ์ง ์ ๋> <์์>
- .spacing : ๊ธ์ ๊ฐ๊ฒฉ์ ์กฐ์ ํ๋ ์์ฑ
- .grad : ๊ทธ๋ผ๋ฐ์ด์
- ๊ธฐ๋ณธํ linear-gradient(to <๋ฐฉํฅ> ๋๋ <๊ฐ๋>, <์์ ์ค์ง์ >, [<์์ ์ค์ง์ >, ......]);
ํ๊ธฐ
HTML / PHP / CSS ๋ฅผ ์ ๋ถ ์ฒ์ ํด๋ณด๋ ๊ด๊ณ๋ก ํ์ ํ ๊ฒฐ๊ณผ๋ฌผ์ด ๋์ด.
์ฐจ์ฐจ ๊ณต๋ถ๋ฅผ ํตํด, ๊ฒฐ๊ณผ๋ฌผ๊ณผ ๋ธ๋ก๊ทธ์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ๋๊ฐ ์์ .
๋ค์ํ๊ฒ ๋จ๋ ์ค๋ฅ ๋ฐฉ์ง๋ฅผ ์ํ ํธ๋ฌ๋ธ ์ํ ์ ์ค์์ฑ์ ๋ํด ์๊ธฐ. (PHP - ํธ๋ฌ๋ธ ์ํ (Trouble Shooting))
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์