PHP와 MySQL을 이용한 간단한 게시판(Bulletin Board System) 소스를 제공하겠습니다. 이 예제는 사용자들이 글을 작성하고, 글 목록을 보고, 글을 상세 보기 할 수 있는 기능을 포함합니다.
1. 환경 설정
1.1 PHP 및 MySQL 설치
PHP와 MySQL이 설치되어 있어야 합니다. XAMPP와 같은 패키지를 이용하면 편리합니다.
1.2 데이터베이스 설정
MySQL에서 bbs라는 데이터베이스를 만들고, posts라는 테이블을 생성합니다:
sql
코드 복사
CREATE DATABASE bbs;
USE bbs;
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. 파일 구조
간단한 구조로 몇 개의 PHP 파일을 만듭니다:
bash
코드 복사
/bbs
/index.php - 글 목록
/post.php - 글 보기
/create.php - 글 작성
/db.php - 데이터베이스 연결
3. db.php - 데이터베이스 연결 파일
php
코드 복사
<?php
$servername = "localhost";
$username = "root"; // MySQL 기본 사용자명
$password = ""; // MySQL 기본 비밀번호
$dbname = "bbs";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}?>
4. index.php - 글 목록 페이지
php
코드 복사
<?php
require 'db.php';
$sql = "SELECT id, title, created_at FROM posts ORDER BY created_at DESC";
$result = $conn->query($sql);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>게시판</title>
</head>
<body>
<h1>글 목록</h1>
<a href="create.php">새 글 쓰기</a>
<ul>
<?php while ($row = $result->fetch_assoc()): ?>
<li>
<a href="post.php?id=<?= $row['id'] ?>"><?= $row['title'] ?></a>
<small>(<?= $row['created_at'] ?>)</small>
</li>
<?php endwhile; ?>
</ul>
</body>
</html>
5. post.php - 글 상세 보기 페이지
php
코드 복사
<?php
require 'db.php';
$id = $_GET['id'];
$sql = "SELECT title, content, created_at FROM posts WHERE id=?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
$post = $result->fetch_assoc();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><?= $post['title'] ?></title>
</head>
<body>
<h1><?= $post['title'] ?></h1>
<p><?= $post['content'] ?></p>
<small>Posted on <?= $post['created_at'] ?></small>
<p><a href="index.php">뒤로</a></p>
</body>
</html>
6. create.php - 글 작성 페이지
php
코드 복사
<?php
require 'db.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$title = $_POST['title'];
$content = $_POST['content'];
$sql = "INSERT INTO posts (title, content) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $title, $content);
if ($stmt->execute()) {
header("Location: index.php");
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>새 글 쓰기</title>
</head>
<body>
<h1>새 글 쓰기</h1>
<form method="post">
<label for="title">제목:</label>
<input type="text" id="title" name="title" required>
<br>
<label for="content">내용:</label>
<textarea id="content" name="content" required></textarea>
<br>
<button type="submit">글 작성</button>
</form>
<p><a href="index.php">뒤로</a></p>
</body>
</html>
7. 실행 방법
웹 서버 루트 디렉토리에 bbs 폴더를 복사합니다.
웹 브라우저에서 http://localhost/bbs/index.php를 엽니다.
게시판을 사용하여 글을 작성하고, 목록을 보고, 상세 보기를 테스트합니다.
이 게시판 예제는 기본적인 기능만 포함하고 있으며, 실제 사용에서는 보안과 사용자 인증 등의 추가 기능이 필요합니다. 또한, PHP의 PDO를 사용하면 SQL 인젝션 방지와 더 나은 보안성을 제공할 수 있습니다.