Autor Zpráva
Dranel
Profil
Zdravím, které z následujících řešení je to správné? Nějak mi to nemyslí... resp. nevím, odkud to PHP rozebírá.

1) if (file_exists(is_file('stranky/'.$_GET['str'].'.php')))
2) if (is_file(file_exists('stranky/'.$_GET['str'].'.php')))
Joker
Profil
Dranel
Ani jedno, podle mě. Obě funkce mají jako vstup název souboru a vracejí bool. Výstup ani jedné z nich proto nemůže být vstupem té druhé.

Správně by to bylo:
if(file_exists($soubor) && is_file($soubor))
ale IMHO to je to samé jako:
if(is_file($soubor))
Dranel
Profil
Joker
Já to bral totiž logicky... první zjistit, jestli soubor existuje a pak, jestli je to soubor. No jo, jenže já předem nevím, že je to soubor. Tak jsem to obrátil. Vyšlo mi, že první zjistím, jestli je to soubor a pak, jestli existuje. No jo, ale já nevím, jestli vůbec existuje. A tak jsem nad tím přemýšlel, až jsem se do toho zamotal. Takže díky za vyřešení. Funkce is_file(&soubor) vyhrála :)
Měsíček
Profil
Nebral jsi to logicky .. když funkce kontroluje jestli "soubor" existuje tak dopředu musí vědět jestli je to soubor ;) takže vlastně file_exists má v sobě zahrnutý algoritmus funkce is_file a opačně, osobně se mi líbí více file_exists(); než is_file();
Dranel
Profil
Měsíček
Na tvůj osobní názor já víš co... :D. Né vážně: mě se taky zamlouvá více...
Měsíček
Profil
Reaguji na Dranela:

"Na tvůj osobní názor já víš co... :D."

[ ... víš co ... vždy dám :D]

"Né vážně: mě se taky zamlouvá více..."

Tobě se zamlouvají více tři tečky? :o) .. já mám k tomu důvod upřednostňovat v této situaci funkci file_exists(); .. docela by mě, ale zajímal jaký důvod máš pro to ty (pro is_file();).
Joker
Profil
Dranel
Jenže ono to takhle nefunguje
Měsíček
...a ani takhle to úplně není.

Když si (oba :-) ) přečtete manuál, tak file_exists zhruba kontroluje, zda na zadané cestě v souborovém systému "něco" je. Funkce is_file kontroluje, zda na zadané cestě v souborovém systému "něco" je a jestli to "něco" je platný soubor.
Tzn. file_exists vrátí true pro existující soubory i adresáře, is_file jenom pro existující soubory (nejsem si jistý, jak to je s oprávněními).
Dranel
Profil
Měsíček
Sympatie

Joker
Aha, dík. Zase jsem o něco chytřejší.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: