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.

Jakub Vrána, Dobře míněné rady, 23.3.2005, diskuse: 10 (nové: 0)

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?

ikona Jakub Vrána OpenID:

Je to tak, omlouvám se za zmatení pojmů.

ikona 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__)

ikona 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'].

ikona Jakub Vrána OpenID:

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?

ikona Jakub Vrána OpenID:

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.

avatar © 2005-2024 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.