약 7분
읽기 설정
글자 크기
줄 간격
글꼴
7.3 게시판 기능 구현
웹 개발 흐름 이해하기
웹 애플리케이션이 어떻게 작동하는지를 이해하는 것이 중요합니다. 브라우저에서 요청을 보내면, 이 요청은 웹 서버에 도달합니다. 웹 서버는 PHP 엔진을 통해 요청을 처리하고, 필요한 경우 데이터베이스와 소통하여 정보를 얻습니다. 마지막으로, 처리된 결과는 브라우저에 다시 전송되어 사용자가 볼 수 있는 형태로 나타나게 됩니다.
// 예: 데이터베이스 연결 (db.php)
$dsn = 'mysql:host=localhost;dbname=mydatabase;charset=utf8';
$username = 'root';
$password = '';
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
게시판 기능 구현
이제 게시판 기능에 대한 구체적인 구현을 진행하겠습니다. 게시판은 사용자가 글을 작성하고, 목록을 조회하며, 수정하고, 삭제할 수 있는 기능을 제공합니다.
데이터베이스 테이블 생성
게시판 기능을 위해 posts라는 테이블을 만듭니다. 이 테이블은 다음과 같은 구조를 가질 것입니다:
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CRUD 기능 구현
각 기능을 PHP로 구현합니다.
1. 글 목록 조회
// 글 목록 조회 (index.php)
$statement = $pdo->query('SELECT * FROM posts');
$posts = $statement->fetchAll(PDO::FETCH_ASSOC);
foreach ($posts as $post) {
echo '<h2>' . htmlspecialchars($post['title']) . '</h2>';
echo '<p>' . htmlspecialchars($post['content']) . '</p>';
}
2. 글 작성
// 글 작성 (create.php)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$title = $_POST['title'];
$content = $_POST['content'];
$stmt = $pdo->prepare('INSERT INTO posts (title, content) VALUES (?, ?)');
$stmt->execute([$title, $content]);
header('Location: index.php');
}
3. 글 수정
// 글 수정 (edit.php)
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$id = $_POST['id'];
$title = $_POST['title'];
$content = $_POST['content'];
$stmt = $pdo->prepare('UPDATE posts SET title = ?, content = ? WHERE id = ?');
$stmt->execute([$title, $content, $id]);
header('Location: index.php');
}
4. 글 삭제
// 글 삭제 (delete.php)
$id = $_GET['id'];
$stmt = $pdo->prepare('DELETE FROM posts WHERE id = ?');
$stmt->execute([$id]);
header('Location: index.php');
보안 고려사항
게시판 기능 구현시 SQL Injection과 XSS를 방지하기 위해 사용자 입력을 검증하고, 데이터베이스 쿼리 시 Prepared Statements를 사용합니다. 다음은 XSS 방지를 위한 코드입니다:
// XSS 방지 (출력할 때)
echo htmlspecialchars($post['content']);
실습 과제
이 과정을 통해 게시판 기본 기능을 구현했습니다. 실습 과제로는 다음과 같은 추가 기능을 구현해 보세요:
- 페이지네이션 기능 추가
- 댓글 기능 구현
이를 통해 더욱 복잡한 웹 애플리케이션을 제작할 수 있도록 하십시오.
프로젝트가 완료된 후, 디버깅 방법과 자주 발생하는 오류를 찾아보고, 그 해결 방법을 논의해 보세요.
정리
게시판 기능 구현을 통해 PHP, MySQL을 활용한 CRUD의 기본 개념과 웹 개발 흐름을 이해했습니다. 또한, 보안 점검의 중요성을 되새겼습니다. 이 경험은 실무에서 웹 애플리케이션을 만들 때 큰 도움이 될 것입니다. 다음 수업에서는 댓글 기능과 파일 업로드 기능을 추가하여 게시판을 확장해 보겠습니다.
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.