[PHP] Automatyczne ładowanie treści

W tym wpisie stworzymy prostą, ale zarazem funkcjonalną funkcję ładującą treści na stronę. Funkcja ta będzie oparta o instrukcję switch i adekwatnie do tego o jaką stronę użytkownik zapyta, taka zostanie mu wyświetlona. Jeśli strona, o którą zapyta użytkownik nie istnieje, zostanie mu wyświetlony komunikat o błędzie 404.

Kod PHP

<?php

 function load_content() {
 
  $page = strip_tags($_GET['page']);
  
  switch($page) {
  
   case 'o-stronie':
   
   $title = 'O stronie';
   $content = 'Lorem ipsu...';
   
   break;
   
   case 'kontakt':
   
   $title = 'Kontakt';
   $content = 'Lorem ipsu...';
   
   break;
   
   // ...
   
   default:
   
   $title = '404 Not Found';
   $content = 'Taka strona nie istnieje.';
   
  }
  
  return ['title' => $title, 'content' => $content];
  
 }

Na początku filtrujemy zmienną G_GET['page'], następnie zmienną $page, do której przypisaliśmy wartość zmiennej G_GET['page'] porównujemy w blokach case do ustalonych wartości. Instrukcja switch pozwala na porównanie tej samej zmiennej z wieloma wartościami, a co za tym idzie pozwala programiście uniknąć użycia instrukcji if i zapisu typu:

if($page === 'pierwsza-strona') // ...
if($page === 'kolejna-strona') // ...

Funkcja zwraca tablicę z tytułem i treścią danej podstrony, jeśli porównanie się powiedzie lub komunikat o błędzie 404 w każdym innym wypadku. Wywołanie funkcji w miejscu, w którym chcemy wyświetlać treść podstrony może wyglądać tak:
<?php $content = load_content(); echo $content['content']; ?>

Plik .htaccess

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^([a-z\-]+)$ index.php?&page=$1 [L]

Aby uzyskać przyjazne linki dopisujemy do pliku .htaccess regułę:
RewriteRule ^([a-z\-]+)$ index.php?&page=$1 [L] co wymusi przypisywanie ciągu znaków występującego po index.php? i zgodnego z wyrażeniem [a-z\-]+ do zmiennej G_GET['page']. Jeśli do pliku .htaccess nie zostanie dopisana odpowiednia reguła to zapytanie o stronę będzie wyglądało typowo: index.php?page=o-stronie.

Komentarze

Popular

[HTML] Jak wstawić obrazek?

[PHP|HTML] Odświeżenie strony

[HTML] Jak wycentrować stronę?