리눅스 회원가입 페이지 구현 방법

이전에 간단하게 로그인 페이지를 구현하였고 다음으로 회원가입 페이지를 만들어볼려고합니다.

기본적인 페이지 구성이 안되어 있으신 분들은 위에 글을 참고해주시면 감사합니다.


1. 데이터베이스 설정

데이터베이스 접근 후 회원 테이블을 우선적으로 생성을 합니다.

유저 테이블 생성
-- MariaDB 접속
mysql -u root -p

-- 회원 테이블 생성
USE community_db;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    name VARCHAR(100) NOT NULL,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

2. 회원가입 페이지 생성 (register.php)

회원가입 페이지 생성
nano /var/www/html/auth/register.php

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>회원가입</title>
    <link rel="stylesheet" href="../css/style.css">
</head>
<body>
    <div class="register-container">
        <h2>회원가입</h2>
        <form action="register_process.php" method="POST">
            <div class="form-group">
                <input type="text" name="username" placeholder="아이디" required>
            </div>
            <div class="form-group">
                <input type="password" name="password" placeholder="비밀번호" required>
            </div>
            <div class="form-group">
                <input type="password" name="confirm_password" placeholder="비밀번호 확인" required>
            </div>
            <div class="form-group">
                <input type="email" name="email" placeholder="이메일" required>
            </div>
            <div class="form-group">
                <input type="text" name="name" placeholder="이름" required>
            </div>
            <div class="form-group">
                <button type="submit">가입하기</button>
            </div>
        </form>
        <div class="links">
            <a href="../index.php">로그인으로 돌아가기</a>
        </div>
    </div>
</body>
</html>

3. 회원가입 처리 파일 생성 (register_process.php)

PHP의 password_hash() 함수를 사용하여 암호화합니다.

원본 비밀번호를 알 수 없음, 같은 비밀번호라도 매번 다른 해시값 생성복호화가 불가능

나중에 로그인할 때는 password_verify() 함수를 사용하여 비밀번호를 검증

if (password_verify($_POST[‘password’], $hashed_password)) {

// 로그인 성공

} else {

// 로그인 실패

회원가입 처리 php 작성
nano /var/www/html/auth/register_process.php

<?php
include '../config.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = mysqli_real_escape_string($conn, $_POST['username']);
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT); // 비밀번호 암호화
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $name = mysqli_real_escape_string($conn, $_POST['name']);

    // 아이디 중복 검사
    $check_query = "SELECT * FROM users WHERE username = '$username' OR email = '$email'";
    $result = mysqli_query($conn, $check_query);

    if (mysqli_num_rows($result) > 0) {
        echo "<script>
                alert('이미 사용중인 아이디 또는 이메일입니다.');
                history.back();
              </script>";
    } else {
        // 회원가입 처리
        $query = "INSERT INTO users (username, password, email, name) 
                  VALUES ('$username', '$password', '$email', '$name')";

        if (mysqli_query($conn, $query)) {
            echo "<script>
                    alert('회원가입이 완료되었습니다.');
                    location.href='../index.php';
                  </script>";
        } else {
            echo "<script>
                    alert('오류가 발생했습니다.');
                    history.back();
                  </script>";
        }
    }
}
?>

4. CSS 스타일 적용

css 디자인 적용
nano /var/www/html/css/style.css

/* 기존 CSS에 추가 */
.register-container {
    background-color: white;
    padding: 20px;
    border-radius: 5px;
    box-shadow: 0 0 10px rgba(0,0,0,0.1);
    width: 300px;
}

.register-container h2 {
    text-align: center;
    margin-bottom: 20px;
}

.form-group {
    margin-bottom: 15px;
}

input {
    width: 100%;
    padding: 8px;
    border: 1px solid #ddd;
    border-radius: 4px;
    box-sizing: border-box;
}

button {
    width: 100%;
    padding: 10px;
    background-color: #4CAF50;
    color: white;
    border: none;
    border-radius: 4px;
    cursor: pointer;
}

button:hover {
    background-color: #45a049;
}

5. 파일 권한 설정

Apache 웹 서버가 파일을 읽고 쓸 수 있도록 소유권을 부여 및 웹 서버가 파일을 실행하고 수정할 수 있게 함

파일 권한 수정

소유자(apache)에게 읽기(4), 쓰기(2), 실행(1) 권한 부여

그룹과 기타 사용자에게 읽기(4)와 실행(1) 권한만 부여

보안을 위해 다른 사용자는 파일을 수정할 수 없게 제한

chown -R apache:apache /var/www/html/auth
chmod -R 755 /var/www/html/auth

구성이 완료되면 페이지 접근 후 회원가입 진행

회원가입 진행

SELECT username, email, name, created_at FROM users;

회원가입 완료 시 데이터 베이스의 테이블에 저장적으로 정보가 조회되는지 확인.

데이터베이스 정보 확인.

By Low ahn

리눅스를 처음 접하시는 분들은 위한 다양한 리눅스 정보를 공유합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다