ホームページ >バックエンド開発 >PHPチュートリアル >シンプルなブログを作成する: PHP と SQLite を使用する

シンプルなブログを作成する: PHP と SQLite を使用する

WBOY
WBOYオリジナル
2023-06-21 13:23:07920ブラウズ

インターネットの発展に伴い、ブログはますます多くの人々が自分の生活、知識、アイデアを共有するためのプラットフォームになりました。自分のブログも作成したい場合は、この記事で PHP と SQLite を使用して簡単なブログを作成する方法を紹介します。

  1. 要件を決定する

ブログの作成を開始する前に、実現したい機能を決定する必要があります。例:

  • ブログ投稿の作成
  • ブログ投稿の編集
  • ブログ投稿の削除
  • ブログ投稿リストの表示
  • 表示ブログ記事の詳細
  • ユーザー認証と権限制御
  1. PHP と SQLite のインストール

ブログを作成するには、PHP と SQLite をインストールする必要があります。 。ここでは、PHP と SQLite が統合された XAMPP を使用します。 XAMPP は https://www.apachefriends.org/download.html からダウンロードできます。

  1. データベースの作成

ブログを作成する前に、ブログ投稿を管理するためのデータベースを作成する必要があります。 SQLite を使用してデータベースを作成できます。 XAMPP コントロール パネルで、Apache サービスと MySQL サービスを開始した後、phpMyAdmin を使用して SQLite データベースを作成できます。

phpMyAdmin で、「データベース」をクリックし、データベース名と文字セット (blog、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 ステートメントは、posts という名前のテーブルを作成します。このテーブルには、id、title、content、created_at の 4 つのフィールドが含まれます。このうち、id は主キーであり、自動インクリメントされます。title はタイトルであり、空にすることはできません。content はコンテンツであり、空にすることはできます。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 データベースに接続します。クエリ ステートメントを使用して、posts テーブル内のすべての記事を取得し、作成時間の降順に並べ替えます。次に、while ループを使用して、各記事のタイトル、内容、作成時刻を記事タグに入力します。タイトルにaタグを使用すると、タイトルから記事詳細ページにリンクします。

  1. 記事詳細ページの作成

前のステップではブログ記事一覧の表示を作成しましたが、ブログ記事の表示も実装する必要があります。詳細ページ。 post.php というファイルを作成して、1 つのブログ投稿の詳細を表示できます。

<?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. User認証と権限制御
#最後に、ユーザー認証と権限制御機能を実装する必要があります。単純なブログでは、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。