Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: include
Forum PHP.pl > Forum > PHP
dzanesko
witam, mam pytanie, ponieważ przejrzałem tematy odnośnie include, było jak używać itd, ale nie znalazłem odpowiedzi na moje...

chciałbym możliwie jak najbardziej oddzielić warstwę html od php - dlatego czy wskazane jest include'owanie pliku np. 'deklaracja.php' czy tam 'deklaracja.html'
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl" xml:lang="pl">


potem po kolei head, menu - stałe fragmenty strony...

czy też lepiej umieszczać deklarację na każdej stronie?
qrooel
Zgodnie z zasadą DRY - nie powtarzaj się, powinieneś załączać te elementy poprzez partiale/pliki które 'inkludujesz'.

Czyli: elementy powtarzające się ładujesz za pomocą include (menu, listy, doctype).
dzanesko
dzięki, teraz jestem pewien że zrobiłem to dobrze smile.gif

jeszcze jedna rzecz, bo wyczytałem że samo:
  1. include 'deklaracja.php';


jest niebezpieczne, lepiej coś takiego:

  1. include($_GET['deklaracja.php']);
  2. //lub
  3. include('./'.$_GET['deklaracja.php']);
  4. //lub
  5. if(file_exist('katalog_ktory_znajduje_sie_na_moim_serwerze/'.$_GET['deklaracja'].'.php'))
  6. {
  7. include 'katalog_ktory_znajduje_sie_na_moim_serwerze/'.$_GET['deklaracja'].'.php';
  8. }


jak to z tym jest?
Sephirus
W jakim sensie niebezpieczne?

Include, któremu damy link do pliku, którego nie ma zwróci warning - można się zabezpieczyć poprzez file_exists tak jak podałeś.

Ale zupełnie nie kumam tego podejścia $_GET['deklaracja.php'] - rozwiń to - bo mi się wydaje, że wrzucanie wprost w include jakiegolwiek GET'a jest nie ciekawym pomysłem...

EDIT:
Aby nie stosować niepotrzebnie file_exists proponuje nie przesyłać wprost do skryptu nazwy pliku jaki ma dołączyć.

Użyj do tego bazy lub jakiejś tablicy w PHP na przykład:

wywołujesz plik: strona.php?s=123

w php masz:

  1. $strony = array(
  2. ...,
  3. 122 => 'newsy.php',
  4. 123 => 'strona.php',
  5. ...
  6. )
  7.  
  8. if(isset($_GET['s']) && isset($strony[$_GET['s']]))
  9. {
  10. include $strony[$_GET['s']];
  11. }
  12. else
  13. {
  14. include '404.php';
  15. }


i tak dalej wink.gif
vee
  1. include 'deklaracja.php';

jest najbezpieczniejszym zastosowaniem include. Pakowanie w to jakichkolwiek zmiennych (a już zwłaszcza $_GET) zmniejsza bezpieczeństwo - w przypadku $_GET wręcz krytycznie - oczywiście chyba, że zastosujesz kod Sephirusa.
dzanesko
czyli z tego wynika/z tego rozumiem że:
  1. include 'deklaracja.php';

nie ma nic wspólnego z przesyłaniem żądania w trybie GET?
i dlatego jest bezpieczne...

dokładnie chodzi mi o ten wątek bo szczerze trochę mi pomieszali i nie wiem
Temat: Bezpieczenstwo skryptow PHP

Sephirus,
czym jest 's' w kodzie?
nospor
Cytat
czym jest 's' w kodzie?
No przecież podał ci przyklad:
Cytat
wywołujesz plik: strona.php?s=123
dzanesko
czyli:
strona.php?s=123

to boolean który sprawdza czy 123 to 'strona.php' ?
nospor
strona.php?s=123 to link a nie zaden boolean
http://twojadomena.pl/strona.php?s=123
dzanesko
Cytat(nospor @ 19.12.2011, 11:52:28 ) *
strona.php?s=123 to link a nie zaden boolean
http://twojadomena.pl/strona.php?s=123


czyli w include piszę:
  1. include 'strona z tablicy równa 123';

?
Sephirus
Ten adres ktoś wpisuje w przeglądarce twojastrona.pl/index.php?s=123

s określa która strona ma się załadować - tutaj ta o numerze 123

Dzięki temu najprostszemu rozwiązaniu masz kontrole nad tym czy dana strona istnieje i możesz ją dołączyć do pliku bez utraty wydajności i korzystania z file_exists

Sory chłopaki - poddaje się :/ nie mam dzisiaj zupełnie cierpliwości sad.gif

dzanesko
no teraz jasne smile.gif
zmyliła mnie ta strona.php...
dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.