Koncovka společných PHP souborů
Školení, která pořádám
U libovolné alespoň trochu větší aplikace je vhodné opakující se kusy kódu (připojení k databázi, společné funkce, design, …) umístit do společných souborů a tyto soubory na potřebná místa následně jen vložit. Otázka je, jakou koncovku by tyto soubory měly mít. Nabízí se v zásadě dvě možnosti, obě mají své nevýhody:
- .php
- Soubory nebudou snadno rozpoznatelné od normálních PHP souborů a pokud nebudou umístěny ve zvláštním adresáři, nedá se snadno zabránit jejich přímému spuštění, což může nést bezpečnostní rizika (spuštění v jiném než předpokládaném kontextu).
- .inc
- Ve výchozí konfiguraci webového serveru se tyto soubory při zadání přímé cesty zobrazí v podobě zdrojového textu, koncovka
.inc
navíc nemá k PHP žádný vztah a textové editory s podporou více jazyků pro ni tedy PHP nemusí použít.
Zkombinováním obou koncovek do .inc.php
se nevýhody obou přístupů dají do značné míry potlačit. Spuštění vkládaného souboru vadí obvykle méně než zobrazení jeho zdrojového kódu (obzvláště pokud vkládané soubory pouze definují funkce nebo třídy, které se následně používají), na rozdíl od samotné koncovky .php
se navíc např. v Apache dá spuštění snadno potlačit direktivou <Files>. Díky odlišné koncovce je na první pohled poznat, že se jedná o vkládaný soubor, ale zároveň editory hned poznají, že se jedná o PHP kód.
Diskuse
JersyWoo:
Asi jsem natvrdlej, ale nebyl by nějaký praktický příklad k downloadu?
Dyndy:
Co je k nepochopení na příponě includovaných souborů .inc.php?
Příklad: Místo layoutFunctions.inc nebo layoutFunctions.php se soubor bude jmenovat layoutFunctions.inc.php.
JJ:
ty, neni to spis pripona souboru?
spaze:
Přímému spuštění se dá zabránít (pokud je to třeba) asi dvěma věcma:
Allow/Deny na adresář s kouskama kódu nebo pomocí konstrukcí typu
if ($_SERVER['SCRIPT_FILENAME'] == __FILE__)
llook:
> editory hned poznají, že se jedná o PHP kód
Můj editor to pozná, pokud někde na začátku souboru uvedu "vim: set ft=php :", nejlépe v komentáři. Používám to u skriptů využívajících ForceType a $_SERVER['PATH_INFO'].
Jakub Vrána :
To je jedna z věcí, které se mi na vi nelíbí - kdyby takovou funkci podporovalo víc editorů, byly by soubory zamořené spoustou zbytečných komentářů. Nevím, proč např. nastavení tabulátorů se píše do vi komentáře, když to jde poznat přímo z dat v souboru (jako to dělá např. SciTE). On by šel poznat i ten typ souboru a tipnul bych si, že vi toho bude schopné, ne?
No, to jsme ale trochu odbočili...
Wejn:
No, ne kazdy pouziva 20 editoru podporujicich meta-informace v souboru zaroven. Takze ten argument je docela hodne off, ze?
Jakub Vrána :
Ne, mluvím o projektech, na kterých pracuje víc lidí zároveň.
Wejn:
No a nejvetsim trikem by pak bylo umisteni mimo webroot a spravne nastaveni include_path. To ale vetsinou nelze od PHP koderu ocekavat :-/
Diskuse je zrušena z důvodu spamu.