PHP에서 데이터베이스 기반 엔진

이제 페이지 콘텐츠가 파일이 아닌 데이터베이스에 저장되는 사이트 엔진을 만들어 봅시다. 데이터베이스에 다음과 같은 테이블이 있다고 가정해 보겠습니다:

pages
id title content
1 title1 <div> content1 </div>
2 title2 <div> content2 </div>
3 title3 <div> content3 </div>

/page/1와 같은 URL로 페이지를 얻고 싶다고 가정해 봅시다. 여기서 숫자는 원하는 페이지의 id를 나타냅니다.

구현을 시작해 보겠습니다. 먼저 별도의 파일에서 데이터베이스 연결을 만들고 이 파일을 우리 파일에 연결하겠습니다:

index.php<?php
  $link = require 'connect.php';
?>

요청된 URL을 가져옵니다:

index.php<?php
  $url = $_SERVER['REQUEST_URI'];
?>

정규 표현식을 사용하여 URL을 부분으로 나눕니다:

index.php<?php
  preg_match('#/page/(\d+)#', $url, $match);
?>

캡처 그룹에서 id를 변수에 기록합니다:

index.php<?php
  $id = $match[1];
?>

데이터베이스에 쿼리를 실행하여 id로 요청된 페이지를 가져옵니다:

index.php<?php
  $query = "SELECT * FROM pages WHERE id=$id";
  $res = mysqli_query($link, $query) or die(mysqli_error($link));
  $page = mysqli_fetch_assoc($res);
?>

템플릿 파일을 가져옵니다:

index.php<?php
  $layout = file_get_contents('layout.php');
?>

템플릿 파일에서 제목과 콘텐츠를 삽입합니다:

index.php<?php
  $layout = str_replace('{{ title }}', $page['title'], $layout);
  $layout = str_replace('{{ content }}', $page['content'], $layout);
?>

조립된 사이트 페이지를 브라우저로 보냅니다:

index.php<?php
  echo $layout;
?>

모든 것을 모아서 다음 코드를 얻습니다:

index.php<?php
  require 'connect.php';
  
  $url = $_SERVER['REQUEST_URI'];
  preg_match('#/page/(\d+)#', $url, $match);
  $id = $match[1];
  
  $query  = "SELECT * FROM pages WHERE id=$id";
  $res = mysqli_query($link, $query) or die(mysqli_error($link));
  $page   = mysqli_fetch_assoc($res);
  
  $layout = file_get_contents('layout.php');
  $layout = str_replace('{{ title }}', $page['title'], $layout);
  $layout = str_replace('{{ content }}', $page['content'], $layout);
  
  echo $layout;
?>
Задание 1

설명된 엔진을 구현하십시오. 작동을 확인하십시오.