webmaster webmastering webdesign

Jesteś tutaj: webmade.org >> porady >> php + mysql

Includowanie - pliki

autor: Patryk 'yarpo' Jar, ostatnia modyfikacja: 2007-02-25

szukaj: include include includowanie includowanie PHP PHP

W miarę rozwoju internetu w zapomnienie odeszły ramki, pływające ramki itp. Niestety w zapomnienie nie odeszły tak całkiem problemy, które rozwiązywały te narzędzia. Dzisiaj do dyspozycji mamy jednak całą gamę nowych możliwości. W tej poradzie opiszę najprostszy sposób ułatwienia sobie pracy przy tworzeniu strony, na której jest wiele takich samych fragmentów kodu, a zmienia się jedynie treść. Tak jak np. na tej stronie. Menu ciągle pozostaje w tym samym miejscu, a wczytywana jest jedynie nowa treść.

Przypuśćmy, że mamy stronę 'index.php', w dużym uproszczeniu jej kod wygląda tak:

<?PHP echo '<?xml version="1.0" encoding="iso-8859-2"?>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
  <meta http-equiv="Content-type" content="application/xhtml+xml; charset=iso-8859-2" />
  <title> [tytuł strony] </title>
</head>
<body>
<p>Tu jest góra strony (logo, menu itp.)</p>
<p>Tu się wiecznie zmienia, każda strona ma inną treść</p>
<p>Tu stała stopka</p>
</body>
</html>

Przy takim ułożeniu treści na stronie, aż prosi się, aby można było wczytywać “na stronę” 'index.php' jedynie środkową część, a resztę pozostawiać bez zmian. W tym przypadku zastosuję PHP. Normalnie mielibyśmy menu wyglądające w taki sposób:

<ul>
  <li><a href="index.php">home</a></li>
  <li><a href="o_mnie.php">o mnie</a></li>
  <li><a href="kontakt.php">konakt</a></li>
</ul>

I teraz moglibyśmy zrobić dwa pliki txt, 'gora.txt' oraz 'dol.txt' i wczytywać je w taki oto sposób na każdej ze stron [przykładowy kod strony 'o_mnie.php']:

<?PHP
  include('strony/gora.txt');
?>
<p>Tutaj jest dużo treści o tobie, grafiki, itp.</p>
<?PHP
  include('strony/dol.txt');
?>

Jak widać plik ten jest już dużo bardziej czytelny. Dzięki zastosowaniu takiej “sztuczki” będzie także dużo łatwiej edytować wygląd strony. Gdyż tu wyświetlamy jedynie gotowy tekst, grafiki, tabelki. Jednak ich wygląd opisujemy gdzie indziej [w pliku CSS – w kodzie strony nie powinno opisywać się formatu(wyglądu), a jedynie strukturę(rozmieszczenie)].

Niestety to nadal nie jest rozwiązanie optymalne... Czemu? Ano temu, że musisz mieć co najmniej n+3 plików [n – liczba stron + 3 pliki: 'index.php', 'gora.txt' i 'dol.txt'].

Postarajmy się więc to jakoś poprawić. Wykorzystamy możliwość przesyłania zmiennych GET. Tak będzie wyglądało przykładowe menu:

<ul>
  <li><a href="index.php?strona=home">home</a></li>
  <li><a href="index.php?strona=o_mnie">o mnie</a></li>
  <li><a href="index.php?strona=kontakt">konakt</a></li>
</ul>

Jak widzisz każdy link odwołuje się do tej samej strony. Jest nią 'index.php'. Jednak dodatkowo przesyłamy parametr [czyli to po '?']. Teraz należy zmodyfikować plik index.php:

<?PHP
  include('strony/gora.txt');

  @$strona=$_GET['strona']; 				// 1
  
  if (file_exists('strony/'.$strona.'.txt'))
	include('strony/'.$strona.'.txt'); 	// 2
  else  
	include('strony/home.txt'); 			// 3

  include('strony/dol.txt');
?>

Powyższy kod już w żaden sposób nie przypomina dobrze znanego i powszechnie rozumianego HTMLa :). Oczywiście w tym momencie includowanie 'gora/dol.txt' wydaje się niekonieczne. Można zawartość tych plików zwyczajne\ie wkleić tu, jako zwykły kod HTML. Jednak dzięki temu, że nie wklejałem tego tu, kod jest przejrzystszy. Dzięki takiemu czemuś uzyskujemy możliwość wczytywania nieskończenie wielu różnych stron, nadal posiadając tylko 1 plik *.php!

Opis:

Powyżej podana metoda ma jeden plus (oczywiście jeśli zadbamy odpowiednio o bezpieczeństwo) – można załączać w ten sposób pliki PHP i w nich wykonywać skrypty. Po prostu zamiast:

include('strony/'.$strona.'.txt');

Wpisujemy:

include('strony/'.$strona.'.php');

Powtarzam jednak, że należy zwrócić uwagę na względy bezpieczeństwa, o których nie będę pisał w tej poradzie [i tak jest już długa :)]. O ile na stronie domowej nie trzeba się tym tak przejmować, to gdy robisz stronę komercyjnie poszukaj trochę informacji na ten temat.

Warto byłoby także zapoznać się z:

Patryk 'yarpo' Jar

Osoby czytające tę publikację przeglądały również:

Chcesz zostać programistą?

Poznaj 6 kroków do efektywnej
nauki programowania!

 

valid XHTML
valid CSS
© 2004-2008 copyright by webmade.org