>  기사  >  백엔드 개발  >  간단한 블로그 만들기: PHP와 SQLite를 사용하여

간단한 블로그 만들기: PHP와 SQLite를 사용하여

WBOY
WBOY원래의
2023-06-21 13:23:07843검색

인터넷의 발달로 인해 블로그는 점점 더 많은 사람들이 자신의 삶과 지식, 아이디어를 공유하는 플랫폼이 되었습니다. 자신만의 블로그를 만들고 싶다면 이 기사에서는 PHP와 SQLite를 사용하여 간단한 블로그를 만드는 방법을 소개합니다.

  1. 필요 사항 결정

블로그 만들기를 시작하기 전에 달성하려는 기능을 결정해야 합니다. 예:

  • 블로그 게시물 만들기
  • 블로그 게시물 편집
  • 블로그 게시물 삭제
  • 블로그 게시물 목록 표시
  • 블로그 게시물 세부정보 표시
  • 사용자 인증 및 권한 제어
  1. PHP 및 SQLite 설치

We는 블로그를 만들려면 PHP와 SQLite를 설치해야 합니다. 여기서는 PHP와 SQLite가 통합된 XAMPP를 사용합니다. XAMPP는 https://www.apachefriends.org/download.html에서 다운로드할 수 있습니다.

  1. 데이터베이스 만들기

블로그를 만들기 전에 블로그 게시물을 관리하기 위한 데이터베이스를 만들어야 합니다. SQLite를 사용하여 데이터베이스를 만들 수 있습니다. XAMPP 제어판에서 Apache 및 MySQL 서비스를 시작한 후 phpMyAdmin을 사용하여 SQLite 데이터베이스를 생성할 수 있습니다.

phpMyAdmin에서 데이터베이스를 클릭하고 블로그, utf8mb4_general_ci 등 데이터베이스 이름과 문자 집합을 입력한 후 생성 버튼을 클릭하여 데이터베이스를 생성합니다.

  1. 데이터베이스 초기화

데이터베이스를 생성한 후에는 데이터베이스를 초기화해야 합니다. 블로그 게시물 정보를 저장하기 위해 블로그 데이터베이스에 테이블을 만듭니다. 다음 SQL 문을 사용할 수 있습니다.

CREATE TABLE IF NOT EXISTS `posts` (
  `id` INTEGER PRIMARY KEY AUTOINCREMENT,
  `title` varchar(255) NOT NULL,
  `content` text,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
);

이 SQL 문은 post라는 테이블을 생성합니다. 이 테이블에는 id, title, content 및 Created_at의 네 가지 필드가 포함되어 있습니다. 그 중 id는 기본 키이며 자동 증가됩니다. title은 내용이며 비워둘 수 없습니다. Created_at는 생성 시간이며 비워둘 수 없습니다. 현재 시간.

  1. 블로그 페이지 만들기

이제 PHP 코드 작성을 시작할 수 있습니다. 먼저 index.php라는 파일을 만듭니다. 이 파일에서는 블로그 게시물 목록을 표시할 수 있습니다. 다음 PHP 코드를 사용할 수 있습니다.

<?php
  $db = new SQLite3('blog.db');
  $results = $db->query('SELECT * FROM posts ORDER BY created_at DESC');

  while ($row = $results->fetchArray()) {
?>
    <article>
      <h2><a href="post.php?id=<?php echo $row['id']; ?>"><?php echo $row['title']; ?></a></h2>
      <p><?php echo $row['content']; ?></p>
      <time datetime="<?php echo $row['created_at']; ?>"><?php echo $row['created_at']; ?></time>
    </article>
<?php
  }
?>

이 PHP 코드는 SQLite3 확장을 사용하여 이전에 만든 SQLite 데이터베이스에 연결합니다. 쿼리문을 사용하여 게시물 테이블의 모든 기사를 가져와서 생성 시간을 기준으로 내림차순으로 정렬합니다. 그런 다음 while 루프를 사용하여 각 기사의 제목, 내용, 생성 시간을 기사 태그에 넣습니다. 제목에 a 태그를 사용하여 제목을 기사 세부정보 페이지에 연결하세요.

  1. 기사 세부정보 페이지 만들기

이전 단계에서 블로그 기사 목록 표시를 생성했지만 블로그 기사 세부정보 페이지 표시도 구현해야 합니다. 단일 블로그 게시물의 세부 정보를 표시하기 위해 post.php라는 파일을 만들 수 있습니다.

<?php
  $id = intval($_GET['id']);

  $db = new SQLite3('blog.db');
  $stmt = $db->prepare('SELECT * FROM posts WHERE id=:id');
  $stmt->bindParam(':id', $id, SQLITE3_INTEGER);
  $result = $stmt->execute();
  $row = $result->fetchArray();
?>
  <article>
    <h2><?php echo $row['title']; ?></h2>
    <p><?php echo $row['content']; ?></p>
    <time datetime="<?php echo $row['created_at']; ?>"><?php echo $row['created_at']; ?></time>
  </article>

이 PHP 코드는 post.php 페이지에서 전달된 기사 ID를 얻은 다음 쿼리 문을 사용하여 지정된 ID의 기사 정보를 얻고 기사 태그에 기사 제목, 내용 및 생성 시간을 표시합니다.

  1. 글 추가, 삭제, 수정 기능 만들기

이제 블로그 글 목록과 상세 페이지 표시 기능을 구현했지만, 블로그 글 생성, 편집, 삭제 기능도 구현해야 합니다. 이는 다음 코드를 사용하여 달성할 수 있습니다:

기사 작성:

<?php
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $title = $_POST['title'];
    $content = $_POST['content'];

    $db = new SQLite3('blog.db');
    $stmt = $db->prepare('INSERT INTO posts(title, content) VALUES(:title, :content)');
    $stmt->bindParam(':title', $title, SQLITE3_STRING);
    $stmt->bindParam(':content', $content, SQLITE3_TEXT);
    $stmt->execute();

    header('Location: index.php');
    exit();
  }
?>
<form method="POST" action="">
  <div>
    <label>Title</label>
    <input type="text" name="title" />
  </div>
  <div>
    <label>Content</label>
    <textarea name="content"></textarea>
  </div>
  <div>
    <button type="submit">Create</button>
  </div>
</form>

기사 편집:

<?php
  $id = intval($_GET['id']);

  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $title = $_POST['title'];
    $content = $_POST['content'];

    $db = new SQLite3('blog.db');
    $stmt = $db->prepare('UPDATE posts SET title=:title, content=:content WHERE id=:id');
    $stmt->bindParam(':title', $title, SQLITE3_STRING);
    $stmt->bindParam(':content', $content, SQLITE3_TEXT);
    $stmt->bindParam(':id', $id, SQLITE3_INTEGER);
    $stmt->execute();

    header('Location: post.php?id=' . $id);
    exit();
  }

  $db = new SQLite3('blog.db');
  $stmt = $db->prepare('SELECT * FROM posts WHERE id=:id');
  $stmt->bindParam(':id', $id, SQLITE3_INTEGER);
  $result = $stmt->execute();
  $row = $result->fetchArray();
?>
<form method="POST" action="">
  <div>
    <label>Title</label>
    <input type="text" name="title" value="<?php echo $row['title']; ?>" />
  </div>
  <div>
    <label>Content</label>
    <textarea name="content"><?php echo $row['content']; ?></textarea>
  </div>
  <div>
    <button type="submit">Save</button>
  </div>
</form>

기사 삭제:

<?php
  $id = intval($_GET['id']);

  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $db = new SQLite3('blog.db');
    $stmt = $db->prepare('DELETE FROM posts WHERE id=:id');
    $stmt->bindParam(':id', $id, SQLITE3_INTEGER);
    $stmt->execute();

    header('Location: index.php');
    exit();
  }

  $db = new SQLite3('blog.db');
  $stmt = $db->prepare('SELECT * FROM posts WHERE id=:id');
  $stmt->bindParam(':id', $id, SQLITE3_INTEGER);
  $result = $stmt->execute();
  $row = $result->fetchArray();
?>
<p>Are you sure you want to delete "<?php echo $row['title']; ?>"?</p>
<form method="POST" action="">
  <button type="submit">Delete</button>
  <a href="post.php?id=<?php echo $id; ?>">Cancel</a>
</form>
  1. 사용자 인증 및 권한 제어

마지막으로 사용자 인증 및 권한 제어 기능을 구현해야 합니다. . 간단한 블로그에서는 HTTP_BASIC_AUTH를 사용하여 사용자 인증을 구현할 수 있습니다. 사용자는 블로그 게시물을 작성, 편집 및 삭제하기 전에 로그인해야 합니다. 이를 달성하려면 다음 코드를 사용할 수 있습니다.

<?php
  if ($_SERVER['PHP_AUTH_USER'] != 'admin' || $_SERVER['PHP_AUTH_PW'] != 'password') {
    header('WWW-Authenticate: Basic realm="My Blog"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'You must be authorized to access this page.';
    exit();
  }
?>

권한 제어가 필요한 페이지 앞에 이 코드를 넣으면 됩니다. 이 코드는 HTTP 헤더의 사용자 이름과 비밀번호가 올바른지 확인합니다. 잘못된 경우 401 Unauthorized 상태 코드를 반환하고 사용자에게 다시 로그인하도록 요청하는 로그인 상자를 표시합니다.

지금까지 간단한 블로그를 만들었습니다. 이 예제를 통해 우리는 PHP와 SQLite의 기본적인 사용법과 PHP를 사용하여 간단한 애플리케이션을 구현하는 방법을 이해할 수 있습니다. PHP에 대해 더 자세히 알아보려면 PHP 공식 문서와 PHP 온라인 튜토리얼을 참조하세요.

위 내용은 간단한 블로그 만들기: PHP와 SQLite를 사용하여의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.