[PHP] Automatyczne ładowanie treści

W tym wpisie stworzymy prostą 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']);
  $title = '';
  $content = '';
  
  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ą $_GET['page'], następnie zmienną $page, do której przypisaliśmy wartość zmiennej $_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 $_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.

Powyższy kod jest tylko prostym przykładem jak można stworzyć dynamiczne ładowanie treści na stronę www.

Komentarze

Popular

[C++] Jak obliczyć pole i obwód trapezu?

[PHP] Jak pobrać adres strony?

[HTML] Jak wyśrodkować tekst?