[PHP] 회원가입 & 로그인 구현하기

혜진·2025년 11월 10일

PHP

목록 보기
6/7
post-thumbnail

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>";
?>

0개의 댓글