PHP에서 데이터베이스 기반 엔진
이제 페이지 콘텐츠가 파일이 아닌 데이터베이스에 저장되는 사이트 엔진을 만들어 봅시다. 데이터베이스에 다음과 같은 테이블이 있다고 가정해 보겠습니다:
| id | title | content |
|---|---|---|
| 1 | title1 | <div> content1 </div> |
| 2 | title2 | <div> content2 </div> |
| 3 | title3 | <div> content3 </div> |
/page/1와 같은 URL로 페이지를 얻고 싶다고 가정해 봅시다. 여기서 숫자는 원하는 페이지의 id를 나타냅니다.
구현을 시작해 보겠습니다. 먼저 별도의 파일에서 데이터베이스 연결을 만들고 이 파일을 우리 파일에 연결하겠습니다:
<?php
$link = require 'connect.php';
?>
요청된 URL을 가져옵니다:
<?php
$url = $_SERVER['REQUEST_URI'];
?>
정규 표현식을 사용하여 URL을 부분으로 나눕니다:
<?php
preg_match('#/page/(\d+)#', $url, $match);
?>
캡처 그룹에서 id를 변수에 기록합니다:
<?php
$id = $match[1];
?>
데이터베이스에 쿼리를 실행하여 id로 요청된 페이지를 가져옵니다:
<?php
$query = "SELECT * FROM pages WHERE id=$id";
$res = mysqli_query($link, $query) or die(mysqli_error($link));
$page = mysqli_fetch_assoc($res);
?>
템플릿 파일을 가져옵니다:
<?php
$layout = file_get_contents('layout.php');
?>
템플릿 파일에서 제목과 콘텐츠를 삽입합니다:
<?php
$layout = str_replace('{{ title }}', $page['title'], $layout);
$layout = str_replace('{{ content }}', $page['content'], $layout);
?>
조립된 사이트 페이지를 브라우저로 보냅니다:
<?php
echo $layout;
?>
모든 것을 모아서 다음 코드를 얻습니다:
<?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;
?>
설명된 엔진을 구현하십시오. 작동을 확인하십시오.