
PHP ๊ฐ์
>PHP - ์ค๊ธ
๐ PHP ์ค๊ธ - 2์ฃผ์ฐจ: ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ ์์คํ ๊ตฌํ - 03 ๋ก๊ทธ์ธ ๊ธฐ๋ฅ (์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ)
![]() |
ํ์ | 10.0 | ๋ผ์ด์ผ์ค | free |
---|---|---|---|---|
์ฌ์ฉ์ํ์ | 10.0 | ์ด์์ฒด์ | ||
๋ค์ด๋ก๋ | 1 | ํ์ผํฌ๊ธฐ | 0 | |
์ ์์ฌ | LUZENSOFT | ๋ฑ๋ก์ผ | 2025-07-18 13:41:08 | |
์กฐํ์ | 12 |
๐ PHP ์ค๊ธ - 2์ฃผ์ฐจ: ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ ์์คํ ๊ตฌํ - 03 ๋ก๊ทธ์ธ ๊ธฐ๋ฅ (์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ)
์๋ ํ์ธ์! #PHP ์ค๊ธ ๊ณผ์ 2์ฃผ์ฐจ, ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ ์์คํ ๊ตฌํ์ ์ธ ๋ฒ์งธ ์๊ฐ์ ๋๋ค. ์ง๋ ์๊ฐ์๋ #ํ์๊ฐ์ ๊ธฐ๋ฅ์ ํตํด #์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ #๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ํ๊ฒ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์์ต๋๋ค. ์ด์ ๋ ์ฌ์ฉ์๋ค์ด ์์คํ ์ ์ ๊ทผํ ์ ์๋๋ก #๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ฐจ๋ก์ ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ #์ธ์ ๊ธฐ๋ฐ์ #์ธ์ฆ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ #๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ณผ์ ์ ๋ํด ์์ธํ ๋ค๋ฃฐ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์ ๊ฒฝํ์ ๊ณ ๋ คํ #๋ก๊ทธ์ธ #ํผ๋ถํฐ, ์ ๋ ฅ๋ ์ ๋ณด๋ฅผ ๊ฒ์ฆํ๊ณ #๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๋ํ์ฌ #์ฌ์ฉ์ ์ธ์ฆ์ ์ฒ๋ฆฌํ๋ #๋ฐฑ์๋ #๋ก์ง, ๊ทธ๋ฆฌ๊ณ #์ธ์ ์ ํ์ฉํ์ฌ #๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์งํ๋ ๋ฐฉ๋ฒ๊น์ง, ๋จ๊ณ๋ณ๋ก ์์ธํ ์ค๋ช ํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.
1. ๋ก๊ทธ์ธ ํผ (login.php) ๊ตฌํ
์ฌ์ฉ์๊ฐ #๋ก๊ทธ์ธ์ ์๋ํ ๋ ๊ฐ์ฅ ๋จผ์ ๋ง์ฃผํ๋ ๋ถ๋ถ์ #๋ก๊ทธ์ธ #ํผ์ ๋๋ค. ์ฌ์ฉ์์๊ฒ #์์ด๋์ #๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ๋ ๊ฐ๋จํ๋ฉด์๋ ์ง๊ด์ ์ธ #HTML #ํผ์ ๊ตฌ์ฑํฉ๋๋ค.
PHP
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>๋ก๊ทธ์ธ</title>
<style>
body { font-family: Arial, sans-serif; background-color: #f4f4f4; display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; }
.login-container { background-color: #fff; padding: 30px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); width: 300px; text-align: center; }
.login-container h2 { margin-bottom: 25px; color: #333; }
.login-container input[type="text"],
.login-container input[type="password"] { width: calc(100% - 20px); padding: 10px; margin-bottom: 15px; border: 1px solid #ddd; border-radius: 4px; font-size: 16px; }
.login-container button { width: 100%; padding: 12px; background-color: #007bff; color: white; border: none; border-radius: 4px; font-size: 17px; cursor: pointer; transition: background-color 0.2s ease; }
.login-container button:hover { background-color: #0056b3; }
.login-container .error-message { color: red; margin-top: 10px; font-size: 14px; }
.login-container .register-link { margin-top: 20px; font-size: 14px; }
.login-container .register-link a { color: #007bff; text-decoration: none; }
.login-container .register-link a:hover { text-decoration: underline; }
</style>
</head>
<body>
<div class="login-container">
<h2>๋ก๊ทธ์ธ</h2>
<form action="login_process.php" method="POST">
<input type="text" name="username" placeholder="์์ด๋" required>
<input type="password" name="password" placeholder="๋น๋ฐ๋ฒํธ" required>
<button type="submit">๋ก๊ทธ์ธ</button>
</form>
<?php
if (isset($_GET['error'])) {
$error_message = '';
if ($_GET['error'] == 'invalid_credentials') {
$error_message = '์์ด๋ ๋๋ ๋น๋ฐ๋ฒํธ๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค.';
} else if ($_GET['error'] == 'empty_fields') {
$error_message = '์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ชจ๋ ์
๋ ฅํด์ฃผ์ธ์.';
} else if ($_GET['error'] == 'db_error') {
$error_message = '๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.';
}
echo '<p class="error-message">' . htmlspecialchars($error_message) . '</p>';
}
?>
<div class="register-link">
์์ง ๊ณ์ ์ด ์์ผ์ ๊ฐ์? <a href="register.php">ํ์๊ฐ์
</a>
</div>
</div>
</body>
</html>
login.php
ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง๋๋ค.
#์์ด๋์ #๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ฐ๋ ๋ ๊ฐ์ #input ํ๋(
name="username"
,name="password"
)๊ฐ ์์ต๋๋ค.ํผ์
action
์์ฑ์login_process.php
๋ก ์ค์ ๋์ด, ์ฌ์ฉ์๊ฐ #๋ก๊ทธ์ธ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์ ๋ ฅ๋ ๋ฐ์ดํฐ๊ฐ #PHP #๋ฐฑ์๋ ํ์ผ๋ก ์ ์ก๋๋๋ก ํฉ๋๋ค.method
๋POST
๋ฐฉ์์ ์ฌ์ฉํ์ฌ #๋ณด์์ ๊ฐํํ๊ณ , ์ ๋ ฅ๊ฐ์ด #URL์ ๋ ธ์ถ๋์ง ์๋๋ก ํฉ๋๋ค.required
์์ฑ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ #์์ด๋์ #๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๋์ ์ ๋ ฅํ๋๋ก ๊ฐ์ ํฉ๋๋ค.#GET ๋ฐฉ์์ผ๋ก ์ ๋ฌ๋
error
ํ๋ผ๋ฏธํฐ๊ฐ ์์ ๊ฒฝ์ฐ, ํด๋นํ๋ #์ค๋ฅ #๋ฉ์์ง๋ฅผ ์ฌ์ฉ์์๊ฒ ํ์ํฉ๋๋ค. ์ด๋ #๋ก๊ทธ์ธ #์คํจ ์ ์ฌ์ฉ์์๊ฒ ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ์๋ ค์ฃผ๋ ์ญํ ์ ํฉ๋๋ค.#ํ์๊ฐ์ ํ์ด์ง๋ก ์ด๋ํ๋ ๋งํฌ๋ฅผ ํ๋จ์ ์ ๊ณตํ์ฌ, ์์ง ๊ณ์ ์ด ์๋ ์ฌ์ฉ์๋ฅผ ๋ฐฐ๋ คํฉ๋๋ค.
2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ค์ (db_config.php)
#ํ์๊ฐ์
๊ธฐ๋ฅ ๊ตฌํ ์ ์ฌ์ฉํ๋ db_config.php
ํ์ผ์ ๊ทธ๋๋ก ํ์ฉํฉ๋๋ค. ์ด ํ์ผ์ #๋ฐ์ดํฐ๋ฒ ์ด์ค #์ ์์ ํ์ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ, ์ฌ๋ฌ #PHP ํ์ผ์์ ์ฌ์ฌ์ฉ๋ฉ๋๋ค.
PHP
<?php
// db_config.php
$db_host = 'localhost'; // ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์คํธ
$db_user = 'root'; // ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์๋ช
$db_pass = 'your_password'; // ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋น๋ฐ๋ฒํธ
$db_name = 'user_db'; // ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช
// ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
// ์ฐ๊ฒฐ ์ค๋ฅ ํ์ธ
if ($conn->connect_error) {
die("๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์คํจ: " . $conn->connect_error);
}
// ๋ฌธ์์
์ค์ (์ ํ ์ฌํญ: ํ๊ธ ๊นจ์ง ๋ฐฉ์ง)
$conn->set_charset("utf8mb4");
?>
$db_pass
๋ถ๋ถ์ ์ค์ ์ฌ์ฉํ์๋ #๋ฐ์ดํฐ๋ฒ ์ด์ค #๋น๋ฐ๋ฒํธ๋ก ๋ฐ๋์ ๋ณ๊ฒฝํด์ฃผ์ธ์.์ด ํ์ผ์ #๋ฐ์ดํฐ๋ฒ ์ด์ค์์ #์ฐ๊ฒฐ์ ์ค์ ํ๊ณ , ์ฐ๊ฒฐ์ ์คํจํ ๊ฒฝ์ฐ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
3. ๋ก๊ทธ์ธ ์ฒ๋ฆฌ ๋ก์ง (login_process.php) ๊ตฌํ
login_process.php
ํ์ผ์ #๋ก๊ทธ์ธ #ํผ์์ ์ ์ถ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ #์ฌ์ฉ์ #์ธ์ฆ์ ์ฒ๋ฆฌํ๋ ํต์ฌ #๋ฐฑ์๋ #๋ก์ง์ ๋ด๋นํฉ๋๋ค. ์ด ๊ณผ์ ์์ #๋ฐ์ดํฐ๋ฒ ์ด์ค์์ #์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์กฐํํ๊ณ , ์
๋ ฅ๋ #๋น๋ฐ๋ฒํธ๋ฅผ #ํด์ฑ๋ #๋น๋ฐ๋ฒํธ์ ๋น๊ตํ์ฌ #์ผ์น ์ฌ๋ถ๋ฅผ ํ์ธํฉ๋๋ค.
PHP
<?php
// ์ธ์
์์ (๋ฐ๋์ ๋ชจ๋ PHP ์ฝ๋ ์์ ์ ๊ฐ์ฅ ๋จผ์ ์ ์ธ)
session_start();
// ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ํ์ผ ํฌํจ
require_once 'db_config.php';
// POST ์์ฒญ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ก๋์๋์ง ํ์ธ
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// ํผ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ๋ฐ ๋ณด์ ์ฒ๋ฆฌ
$username = $conn->real_escape_string($_POST['username']);
$password = $_POST['password']; // ๋น๋ฐ๋ฒํธ๋ ํด์ฑ ๋น๊ต๋ฅผ ์ํด ๊ทธ๋๋ก ๋ (๋์ค์ ํด์ ํจ์๋ก ์ฒ๋ฆฌ)
// ์
๋ ฅ๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ (๋น ๊ฐ ์ฒดํฌ)
if (empty($username) || empty($password)) {
header("Location: login.php?error=empty_fields");
exit();
}
// 1. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ์ ์ ๋ณด ์กฐํ
$stmt = $conn->prepare("SELECT id, username, password FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows === 1) {
$user = $result->fetch_assoc();
// 2. ๋น๋ฐ๋ฒํธ ํ์ธ (ํด์ฑ๋ ๋น๋ฐ๋ฒํธ์ ๋น๊ต)
// password_verify() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์
๋ ฅ๋ ๋น๋ฐ๋ฒํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ํด์ฑ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋น๊ตํฉ๋๋ค.
if (password_verify($password, $user['password'])) {
// ๋ก๊ทธ์ธ ์ฑ๊ณต! ์ธ์
์ ์ฌ์ฉ์ ์ ๋ณด ์ ์ฅ
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
// ๋ก๊ทธ์ธ ์ฑ๊ณต ํ ๋์๋ณด๋ ํ์ด์ง ๋๋ ์ธ๋ฑ์ค ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
header("Location: dashboard.php"); // ๋๋ index.php
exit();
} else {
// ๋น๋ฐ๋ฒํธ ๋ถ์ผ์น
header("Location: login.php?error=invalid_credentials");
exit();
}
} else {
// ์ฌ์ฉ์ ์์ (์์ด๋ ๋ถ์ผ์น)
header("Location: login.php?error=invalid_credentials");
exit();
}
$stmt->close();
} else {
// POST ์์ฒญ์ด ์๋ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
header("Location: login.php");
exit();
}
// ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ซ๊ธฐ
$conn->close();
?>
login_process.php
ํ์ผ์ ํต์ฌ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
#์ธ์ #์์:
session_start();
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ #์ธ์ ์ ์์ํฉ๋๋ค. ์ด๋ #๋ก๊ทธ์ธ ์ฑ๊ณต ํ #์ฌ์ฉ์ ์ ๋ณด๋ฅผ #์ธ์ ์ ์ ์ฅํ๊ณ , ๋ค๋ฅธ ํ์ด์ง์์ ํด๋น #์ธ์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ํ์ ๋จ๊ณ์ ๋๋ค. ๋ฐ๋์ ๋ชจ๋ #PHP ์ฝ๋์ ๊ฐ์ฅ ์ฒซ ์ค์ ์์นํด์ผ ํฉ๋๋ค.#๋ฐ์ดํฐ๋ฒ ์ด์ค #์ฐ๊ฒฐ:
db_config.php
ํ์ผ์require_once
ํ์ฌ #๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํฉ๋๋ค.#POST #์์ฒญ ํ์ธ ๋ฐ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ: ํผ์ด
POST
๋ฐฉ์์ผ๋ก ์ ์ถ๋์๋์ง ํ์ธํ๊ณ , #์์ด๋์ #๋น๋ฐ๋ฒํธ๋ฅผ ์์ ํ๊ฒ ๊ฐ์ ธ์ต๋๋ค. ์ด๋real_escape_string()
์ ์ฌ์ฉํ์ฌ #SQL #์ธ์ ์ ๊ณต๊ฒฉ์ ๋ฐฉ์งํฉ๋๋ค. ๋น๋ฐ๋ฒํธ๋ ์์ง #ํด์๋์ง ์์ ์ํ๋ก ์ ์งํฉ๋๋ค.#์ ๋ ฅ๊ฐ #์ ํจ์ฑ #๊ฒ์ฌ: #์์ด๋์ #๋น๋ฐ๋ฒํธ๊ฐ ๋ชจ๋ ์ ๋ ฅ๋์๋์ง ํ์ธํฉ๋๋ค. ๋น ๊ฐ์ด ์์ ๊ฒฝ์ฐ #์ค๋ฅ #๋ฉ์์ง์ ํจ๊ป #๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธํฉ๋๋ค.
#๋ฐ์ดํฐ๋ฒ ์ด์ค์์ #์ฌ์ฉ์ #์ ๋ณด #์กฐํ:
users
ํ ์ด๋ธ์์ ์ ๋ ฅ๋ #์์ด๋์ ํด๋นํ๋ #์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์กฐํํฉ๋๋ค. #Prepared #Statement๋ฅผ ์ฌ์ฉํ์ฌ #SQL #์ธ์ ์ ์ ๋๋นํฉ๋๋ค.#๋น๋ฐ๋ฒํธ #ํ์ธ (
password_verify()
์ฌ์ฉ):์กฐํ๋ #์ฌ์ฉ์๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ,
password_verify()
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ #๋น๋ฐ๋ฒํธ์ #๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ #ํด์ฑ๋ #๋น๋ฐ๋ฒํธ๋ฅผ ๋น๊ตํฉ๋๋ค. ์ด ํจ์๋ #์ํธํ์ ์ผ๋ก ์์ ํ๊ฒ #๋น๋ฐ๋ฒํธ์ #์ผ์น ์ฌ๋ถ๋ฅผ ํ์ธํด ์ค๋๋ค.#๋น๋ฐ๋ฒํธ๊ฐ #์ผ์นํ๋ฉด #๋ก๊ทธ์ธ #์ฑ๊ณต์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค.
#์ธ์ ์ #์ฌ์ฉ์ #์ ๋ณด #์ ์ฅ: #๋ก๊ทธ์ธ #์ฑ๊ณต ์,
#_SESSION
์ํผ๊ธ๋ก๋ฒ ๋ณ์์#user_id
์#username
๊ฐ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด ์ ๋ณด๋ ์ฌ์ฉ์๊ฐ #๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์งํ๊ณ , ๋ค๋ฅธ ํ์ด์ง์์ #๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.#๋ฆฌ๋ค์ด๋ ํธ: #๋ก๊ทธ์ธ ์ฑ๊ณต ์, ์ฌ์ฉ์๋ฅผ
#dashboard.php
(๋๋index.php
) ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธํฉ๋๋ค. #๋ก๊ทธ์ธ #์คํจ ์์๋ ์ ์ ํ #์ค๋ฅ #๋ฉ์์ง์ ํจ๊ป ๋ค์ #๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธํฉ๋๋ค.#๋ฐ์ดํฐ๋ฒ ์ด์ค #์ฐ๊ฒฐ #๋ซ๊ธฐ: ๋ชจ๋ ์์ ์ด ๋๋ ํ์๋
mysqli
์ฐ๊ฒฐ์ ๋ซ์ ๋ฆฌ์์ค๋ฅผ ํด์ ํฉ๋๋ค.
4. ๋ก๊ทธ์ธ ์ํ ํ์ธ ๋ฐ ๋์๋ณด๋ ํ์ด์ง (dashboard.php)
#์ธ์ ๊ธฐ๋ฐ์ #์ธ์ฆ์ด ์ ๋๋ก ์๋ํ๋์ง ํ์ธํ๊ณ #๋ก๊ทธ์ธ๋ ์ฌ์ฉ์์๊ฒ๋ง ์ ๊ทผ์ ํ์ฉํ๋ #๋์๋ณด๋ #ํ์ด์ง๋ฅผ ๊ตฌํํฉ๋๋ค.
PHP
<?php
// ์ธ์
์์ (์ธ์
์ ๋ณด์ ์ ๊ทผํ๊ธฐ ์ํด ํ์)
session_start();
// ๋ก๊ทธ์ธ ์ฌ๋ถ ํ์ธ
if (!isset($_SESSION['user_id'])) {
// ๋ก๊ทธ์ธ๋์ง ์์๋ค๋ฉด ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
header("Location: login.php");
exit();
}
// ๋ก๊ทธ์ธ๋ ์ฌ์ฉ์ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
$user_id = $_SESSION['user_id'];
$username = $_SESSION['username'];
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>๋์๋ณด๋</title>
<style>
body { font-family: Arial, sans-serif; background-color: #f4f4f4; display: flex; flex-direction: column; justify-content: center; align-items: center; min-height: 100vh; margin: 0; }
.dashboard-container { background-color: #fff; padding: 30px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); width: 400px; text-align: center; }
.dashboard-container h2 { margin-bottom: 20px; color: #333; }
.dashboard-container p { font-size: 18px; color: #555; margin-bottom: 30px; }
.dashboard-container .logout-button { display: inline-block; padding: 10px 20px; background-color: #dc3545; color: white; text-decoration: none; border-radius: 4px; font-size: 16px; transition: background-color 0.2s ease; }
.dashboard-container .logout-button:hover { background-color: #c82333; }
</style>
</head>
<body>
<div class="dashboard-container">
<h2>ํ์ํฉ๋๋ค, <?php echo htmlspecialchars($username); ?>๋!</h2>
<p>๋ก๊ทธ์ธ์ ์ฑ๊ณตํ์
จ์ต๋๋ค. ์ด์ ๋์๋ณด๋ ๊ธฐ๋ฅ์ ์ด์ฉํ์ค ์ ์์ต๋๋ค.</p>
<a href="logout.php" class="logout-button">๋ก๊ทธ์์</a>
</div>
</body>
</html>
dashboard.php
ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ด ์๋ํฉ๋๋ค.
#์ธ์ #์์: ์ด ํ์ด์ง๋ ์ญ์
session_start();
๋ฅผ ํตํด #์ธ์ ์ ์ ๊ทผํฉ๋๋ค.#๋ก๊ทธ์ธ #์ฌ๋ถ #ํ์ธ:
!isset($_SESSION['user_id'])
๋ฅผ ์ฌ์ฉํ์ฌ#_SESSION
์ #user_id๊ฐ ์ค์ ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.#์ ๊ทผ #์ ํ: ๋ง์ฝ #user_id๊ฐ ์๋ค๋ฉด, ์ฆ #๋ก๊ทธ์ธ ์ํ๊ฐ ์๋๋ผ๋ฉด, ์ฌ์ฉ์๋ฅผ ๊ฐ์ ๋ก
login.php
ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธํ์ฌ ์ ๊ทผ์ ๋ง์ต๋๋ค.#์ฌ์ฉ์ #์ ๋ณด #ํ์: #๋ก๊ทธ์ธ๋ ์ฌ์ฉ์์๊ฒ #์ธ์ ์ ์ ์ฅ๋
#username
์ ์ด์ฉํ์ฌ ํ์ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค.#๋ก๊ทธ์์ ๋งํฌ:
#logout.php
ํ์ผ๋ก ์ฐ๊ฒฐ๋๋ #๋ก๊ทธ์์ ๋ฒํผ์ ์ ๊ณตํฉ๋๋ค.
5. ๋ก๊ทธ์์ ์ฒ๋ฆฌ ๋ก์ง (logout.php) ๊ตฌํ
#๋ก๊ทธ์์ ๊ธฐ๋ฅ์ ํ์ฌ #์ฌ์ฉ์์ #์ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ํ๊ดดํ์ฌ #๋ก๊ทธ์ธ ์ํ๋ฅผ ํด์ ํ๋ ์ญํ ์ ํฉ๋๋ค.
PHP
<?php
// ์ธ์
์์ (์ธ์
๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํด ํ์)
session_start();
// ๋ชจ๋ ์ธ์
๋ณ์ ์ ๊ฑฐ
$_SESSION = array();
// ์ธ์
์ฟ ํค ์ญ์ (์ธ์
ID๋ฅผ ์ ์ฅํ๋ ์ฟ ํค)
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
// ์ธ์
ํ๊ดด
session_destroy();
// ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ
header("Location: login.php");
exit();
?>
logout.php
ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ์ค์ํ ์์
์ ์ํํฉ๋๋ค.
#์ธ์ #์์:
#์ธ์
์ ์์ํ์ฌ ํ์ฌ `#์ฌ์ฉ์์ #์ธ์ #๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋๋ก ํฉ๋๋ค.#์ธ์ #๋ณ์ #์ ๊ฑฐ:
$_SESSION = array();
๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ #์ธ์ ์ ์ ์ฅ๋ ๋ชจ๋ #์ธ์ #๋ณ์๋ฅผ ์ด๊ธฐํํฉ๋๋ค.#์ธ์ #์ฟ ํค #์ญ์ :
session_get_cookie_params()
์setcookie()
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ #๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋ #์ธ์ #์ฟ ํค๋ฅผ ์ญ์ ํฉ๋๋ค. ์ด๋ #๋ธ๋ผ์ฐ์ ๊ฐ ์ธ์ ID๋ฅผ ๋ ์ด์ ์ ์ฅํ์ง ์๋๋ก ํ์ฌ ๋ณด์์ ๊ฐํํฉ๋๋ค.#์ธ์ #ํ๊ดด:
session_destroy();
ํจ์๋ฅผ ํธ์ถํ์ฌ ์๋ฒ์ #์ธ์ #๋ฐ์ดํฐ ํ์ผ์ ์์ ํ ์ญ์ ํฉ๋๋ค.#๋ก๊ทธ์ธ #ํ์ด์ง๋ก #๋ฆฌ๋ค์ด๋ ํธ: ๋ชจ๋ #๋ก๊ทธ์์ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋๋ฉด ์ฌ์ฉ์๋ฅผ
login.php
ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธํฉ๋๋ค.
๊ฒฐ๋ก
์ด๋ฒ ํฌ์คํ ์์๋ #์ธ์ ๊ธฐ๋ฐ #์ธ์ฆ ๋ฐฉ์์ ํ์ฉํ #๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์๋ฒฝํ๊ฒ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์์ต๋๋ค. #๋ก๊ทธ์ธ #ํผ๋ถํฐ #๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํตํ #์ฌ์ฉ์ #์ธ์ฆ, #๋น๋ฐ๋ฒํธ #ํด์ฑ #๋น๊ต, ๊ทธ๋ฆฌ๊ณ #์ธ์ ์ ์ด์ฉํ #๋ก๊ทธ์ธ #์ํ #๊ด๋ฆฌ๊น์ง, ์ค์ ์๋น์ค์์ ์ค์ํ #๋ณด์ ๋ฐ #์ฌ์ฉ์ ๊ฒฝํ ์์๋ฅผ ๋ชจ๋ ๋ค๋ฃจ์์ต๋๋ค.
์ด์ ์ฌ๋ฌ๋ถ์ #PHP #ํ์๊ฐ์ ๋ฐ #๋ก๊ทธ์ธ ์์คํ ์ ์ฌ์ฉ์ #์ธ์ฆ์ ํตํด ์์ ํ๊ฒ ์๋ํ ์ค๋น๋ฅผ ๋ง์ณค์ต๋๋ค. ๋ค์ ์๊ฐ์๋ #๋ก๊ทธ์ธ๋ ์ฌ์ฉ์๊ฐ ์์ ์ ์ ๋ณด๋ฅผ #์์ ํ๊ฑฐ๋ #์ญ์ ํ๋ ๋ง์ดํ์ด์ง ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ ์์คํ ์ ๋์ฑ ์์ฑ๋ ๋๊ฒ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
๋ง์ผํ
VPN ํ์ํจํ ๋ ๋ฃจ์ VPN
https://vpn.luzensoft.com/