PHP 회원가입 & 로그인 구현하기
1. 데이터 베이스 연동하기
📚 db.php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "dailypost_db";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("DB 연결 실패: " . $conn->connect_error);
}
?>
2. 회원 정보를 저장할 테이블 만들기
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(50) NOT NULL UNIQUE,
name VARCHAR(100) NOT NULL,
password VARCHAR(255) NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
3. 회원가입 폼
📚 signup.php
<form action="procs/signup_proc.php" method="post">
<input type="text" name="name" placeholder="Name" required>
<input type="text" name="email" placeholder="Email" required>
<input type="password" name="password" placeholder="Password" required>
<input type="password_confirm" name="password_confirm" placeholder="Confirm Password" required>
<button type="submit">SIGN UP</button>
</form>

4. 회원가입 처리
📚 signup_proc.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
include '../db.php';
include '../classes/AuthClass.php';
$auth = new AuthClass($conn);
$name = trim($_POST['name']);
$email = trim($_POST['email']);
$password = $_POST['password'];
$password_confirm = $_POST['password_confirm'];
if ($password !== $password_confirm) {
echo "<script>alert('비밀번호가 일치하지 않습니다.'); history.back();</script>";
exit;
}
$sql = "SELECT id FROM users WHERE email = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $email);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
echo "<script>alert('이미 가입된 이메일입니다.'); history.back();</script>";
exit;
}
$sql = "INSERT INTO users (name, email, password, created_at) VALUES (?, ?, ?, NOW())";
$stmt = $conn->prepare($sql);
$stmt->bind_param("sss", $name, $email, $hashed);
if ($auth->register($email, $password, $name)) {
$_SESSION['user_email'] = $email;
$_SESSION['user_name'] = $name;
$_SESSION['is_login'] = true;
echo "<script>alert('회원가입이 완료되었습니다!'); location.href='../index.php';</script>";
exit;
} else {
echo "<script>alert('회원가입 중 오류가 발생했습니다.'); history.back();</script>";
exit;
}
?>
5. 로그인 폼
📚 signin.php
<form action="procs/signin_proc.php" method="post">
<input type="text" name="email" placeholder="Email" required>
<input type="password" name="password" placeholder="Password" required>
<button type="submit">SIGN IN</button>
</form>

6. 로그인 처리
📚 signin_proc.php
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
include '../db.php';
include '../classes/AuthClass.php';
$auth = new AuthClass($conn);
$email = trim($_POST['email']);
$password = $_POST['password'];
if (empty($email)) {
echo "<script>alert('이메일을 입력해주세요.'); history.back();</script>";
exit;
}
if (empty($password)) {
echo "<script>alert('비밀번호를 입력해주세요.'); history.back();</script>";
exit;
}
if ($auth->login($email, $password)) {
echo "<script>alert('로그인 성공!'); location.href='../index.php';</script>";
exit;
} else {
echo "<script>alert('이메일 또는 비밀번호가 잘못되었습니다.'); history.back();</script>";
exit;
}
?>
7. 로그아웃
📚 logout.php
<?php
session_start();
session_destroy();
echo "<script>alert('로그아웃되었습니다.'); location.href='signin.php';</script>";
?>