약 6분
읽기 설정
글자 크기
줄 간격
글꼴
7.1 회원가입 기능 구현
웹 개발의 기본 흐름을 이해하기 위해서는 브라우저, 웹 서버, PHP, 데이터베이스, 브라우저의 순차적인 작동 방식에 대해 알아야 합니다. 사용자가 브라우저를 통해 서버에 요청을 보내면, 웹 서버가 PHP 스크립트를 실행하고, 필요한 경우 데이터베이스에 접근하여 정보를 가져온 후, 다시 브라우저에 응답합니다. 이 과정을 통해 회원가입 기능을 구현해 보겠습니다.
회원가입 기능은 사용자의 정보를 입력받아 데이터베이스에 저장하는 과정으로 구성됩니다. 다음의 내용에서 이를 단계별로 구현해 보겠습니다.
1. 데이터베이스 테이블 생성
먼저 MySQL(MariaDB)에서 회원 정보를 저장할 테이블을 생성합니다. 아래 SQL 쿼리를 사용하여 users 테이블을 만듭니다.
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. 회원가입 폼 구현
회원가입을 위한 HTML 폼을 구현합니다. 사용자가 입력한 정보를 서버에 전송하기 위해 POST 메소드를 사용하며, 각 필드는 유효성 검사를 추가합니다.
<form action="register.php" method="POST">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required><br>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required><br>
<button type="submit">Register</button>
</form>
3. 회원가입 로직 구현
PHP 스크립트 register.php에서는 사용자가 폼에 입력한 정보를 수집하고, 해싱하여 데이터베이스에 저장합니다. 이를 위해 PDO를 사용하여 SQL 인젝션 공격을 방지합니다.
<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$username = $_POST['username'];
$email = $_POST['email'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$stmt = $pdo->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)");
$stmt->execute([$username, $password, $email]);
echo '회원가입이 완료되었습니다!';
}
} catch (PDOException $e) {
echo 'Error: ' . $e->getMessage();
}
?>
4. 보안 및 검증
회원가입 시 입력된 데이터는 반드시 검증하고, 해싱을 통하여 비밀번호를 안전하게 처리해야 합니다. SQL Injection, XSS, CSRF 방지 대책을 포함하여 보안에 유의해야 합니다.
회원가입 기능을 구현한 후, 테스트를 통해 중복된 사용자명 및 이메일이 입력되지 않도록 기본적인 유효성 검사를 추가합니다. 또한, 실제 운영 환경에서는 SSL/TLS를 통해 데이터 통신을 암호화해야 합니다.
정리
이제 PHP를 사용하여 회원가입 기능을 성공적으로 구현했습니다. 실제 프로젝트에서 반복적인 코드 사용을 방지하고, 유지보수성을 높이기 위해 객체지향 프로그래밍(OOP) 및 MVC 패턴을 활용하는 방법을 학습해 나가실 수 있습니다. 각 챕터 종료 후 제공된 실습 과제를 통해 지속적으로 학습해 나가오길 바랍니다.
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.