[PHP] - ako spravne zapistat: is_file("../pages/nova.ph

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod zenofex 23. 2. 2006 07:47

V hlavnom adresari mam subor "index.php" a v podadresari "pages" mam subor "nova.php". Aku syntax mam pouzit ak chcem skriptom ktory je v "index.php" otestovat, ci "nova.php" v podadresari "pages" skutocne existuje? Napisem co som skusal:

Obsah "index.php":

1. is_file("pages/nova.php") //nefungovalo
2. is_file("/pages/nova.php") //nefungovalo
3. is_file("../pages/nova.php") //nefungovalo - uz som skusal vseliake blbosti ale ani tie nefungovali

// Howard - upraven nazev
// mbing : Téma přesunuto ● z Programování do Tvorba webových stránek a aplikací.
zenofex
Junior
Uživatelský avatar

Odeslat příspěvekod DEE 23. 2. 2006 07:53

is_file("./pages/nova.php")
DEE
Junior

Odeslat příspěvekod Bummer 23. 2. 2006 07:56

spis
Kód: Vybrat vše
is_file($_SERVER["DOCUMENT_ROOT"]."/pages/nova.php")
Breaking a part of my heart to find release
Taking you out of my blood to bring me peace
Bummer
Junior
Uživatelský avatar

Odeslat příspěvekod bubu00er(smazano) 23. 2. 2006 07:58

. znamená aktuální adresář
.. znamená předchozí adresář
bubu00er(smazano)
Kolemjdoucí

Odeslat příspěvekod zenofex 23. 2. 2006 08:00

Vdaka, urcite skusim vsetky Vase priklady /ale az ked pridem z prace domov.../ :P
zenofex
Junior
Uživatelský avatar

Odeslat příspěvekod K8 23. 2. 2006 08:34

spravne varianty jsou:

a) is_file("pages/nova.php")
b) is_file("./pages/nova.php")
c) is_file($_SERVER["DOCUMENT_ROOT"]."/pages/nova.php")

takze pokud a) nefungovalo, tak chyba musi byt nekde jinde (me varianty a) i b) bez problemu funguji)
c) me prijde zbytecne slozite, kdyz relativni cesty musi fungovat
K8
Pokročilý

Odeslat příspěvekod Z@chi 23. 2. 2006 08:51

Prikaz is_file se stejne jako is_dir vetsinou pouzivaji na testovani o jaky typ souboru se jedna.
Pro testovani jestli soubor existuje se pouziva funkce
Kód: Vybrat vše
bool file_exists ( string filename)
___________________________________
if(file_exists("./files/neco.php"))
require_once 'neco.php';


a nebo funkce bool is_readable ( string filename)
- ta zjisti jeslti soubor existuje a lze z nej cist
Kód: Vybrat vše
if(is_readable ("./files/neco.php"))
require_once 'neco.php';


Jinak, pokud se zadava relativni adresa, tak vetsinou zacina ".", ktera znaci adresar, od ktereho adresa zacina.
dale jiz plati obvykla sintaxe, napr:
"./../neco.php" - o adresar nahoru
Z@chi
Junior
Uživatelský avatar

Odeslat příspěvekod zenofex 23. 2. 2006 08:59

No aby som to upresnil - myslel som si, ze robim chybu v zapise pages/nova.php. Povodne je to takto: miesto "nova" /teda nazvu suboru/ pouzivam premennu pr. $meno takze moj povodny skript vypadal asi takto:

if(is_file("pages/".$meno.".php");

Je to spravny zapis?
zenofex
Junior
Uživatelský avatar

Odeslat příspěvekod Z@chi 23. 2. 2006 09:04

zenofex píše:No aby som to upresnil - myslel som si, ze robim chybu v zapise pages/nova.php. Povodne je to takto: miesto "nova" /teda nazvu suboru/ pouzivam premennu pr. $meno takze moj povodny skript vypadal asi takto:

if(is_file("pages/".$meno.".php");

Je to spravny zapis?

Ano, tento zapis by mel bez problemu fungovat.
ale preci jenom by jsem pouzil relativni adresu ve tvaru:
Kód: Vybrat vše
if(is_readable ("./pages/" . $jmeno . ".php"))
//operace
Z@chi
Junior
Uživatelský avatar

Odeslat příspěvekod K8 23. 2. 2006 09:19

a kdyz hledam problem, tak bych to rozsiril treba takto

Kód: Vybrat vše
$pomocna_pr="pages/".$meno.".php";
print '<p>test 01:' . $pomocna_pr . '</p>';
if(is_file($pomocna_pr);


abych mel jistotu, jakou cestu to opravdu testuje
K8
Pokročilý

Odeslat příspěvekod stefino 23. 2. 2006 09:26

K8 píše:c) is_file($_SERVER["DOCUMENT_ROOT"]."/pages/nova.php")

c) me prijde zbytecne slozite, kdyz relativni cesty musi fungovat


Nie som si isty! V pripade pouzitia mod_rewrite na apache moze byt vyhodnejsie pouzit cesty absolutne. Relativne su predsa len relativne a par pravidlami sa daju znefunkcnit ;)

Neviem, aky ma autor problem, ale ked mu nefunguje, ani jeden z povodnych navrhov, problem moze byt prave z rewrite rule-ami .. myslim, ze aspon jedno tu spominane riesenie bude fungovat, tak supom skusat :)
stefino
Junior

Odeslat příspěvekod K8 23. 2. 2006 09:30

stefi píše:Nie som si isty! V pripade pouzitia mod_rewrite na apache moze byt vyhodnejsie pouzit cesty absolutne. Relativne su predsa len relativne a par pravidlami sa daju znefunkcnit ;)

ale tahle funkce by mela pracovat jen na urovni filesystemu, ta s Apachem nema nic spolecneho a tudiz zadny mod_rewrite by mu to nemel prepsat
K8
Pokročilý

Odeslat příspěvekod stefino 23. 2. 2006 11:14

Re-writeami sa moze stat, ze aktualny adresar je iny, ako ten v ktorom ma index.php (napriek tomu, ze sa spracovava), t.j. relativna cesta pages/nova.php neexistuje! Aj ked takyto stav je velmi malo pravdepodobny - na mod_rewrite si treba davat pozor, takze ho vacsinou obhospodaruju profici :) tipujem to inak na nejaku chybu 'blbec', poznamka o rewritoch bola len pre zaujimavost ;)

Priklad:

/document_root/index.php
/document_root/pages/nova.php

aktualny adresar je /document_root/images/

potom po aplikovani pages/nova.php vznikne
/document_root/images/pages/nova.php, ktory neexistuje :(
stefino
Junior

Odeslat příspěvekod gashtaan 23. 2. 2006 11:25

piskat viem, v pohode aj zapistim... ale to zapistat is_file asi nezvladnem :)
gashtaan
Junior


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků