Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
PHP
Náhrada FTP
redakcni system
31. března 2003, 00.00 | Možnosti PHP nám nabízejí odstranění závislosti na FTP protokolu. Jak to implementovat do naše RS si ukážeme v tomto díle.
Dnes tedy začínáme další část, se kterou bychom měli nahradit FTP rozhraní pro práci se soubory a která by nám pomohla řešit náhle vzniknuvší problémy, popřípadě upload nových souborů na server.Hned pro začátek bych chtěl upozornit na jednu věc a to využitelnost tohoto způsobu práce se soubory. Většina (dá se říci že všechny) freeweby tuto možnost zakazují. Je to z důvodů bezpečí vašich i jejich souborů. Pokud by bylo tak jednoduché se k nim dostat, tak by kdokoliv mohl měnit obsah serveru, což je jistě nežádoucí. Způsobuje to nastavení práv, jaké dostanete jako uživatel. Správci serveru vám umožňují upload pomocí scriptů, které toto zabezpečení obcházejí. Jak? Podívejte se na zdrojový kod formuláře, kterým se to provádí. Již při pohledu na skrytá pole to bude jasné.
To je ale na jiné povídání. Co tedy bude tento systém umět. Zobrazí nám jméno souboru, jeho velikost, datum a čas vzniku. Dále budeme moci mazat, upravovat a přidávat soubory.
Aby jsme se scriptem soubory.php mohli pracovat, musíme se k němu nějak dostat. Přidáme tedy odkaz do souboru menu.php.
|
Je jasné, že práci se zdojovým kodem souborů přenecháme pouze správci systému, kterým je v našem případě šéfredaktor.
Následuje script soubory.php s popisem. Upozorňuji, že tento script musí být umístěn v kořeni (./)!!!
|
Popíšeme si jej. Po načtení souborů a autorizaci jsou podmínky pro mazání. Jak jste si všimli, tak ke smazání je potřeba celá cesta ze které pomocí funkce Is_Dir() zístíme, zda se jedná o jméno souboru nebo adresáře. Podle toho pak použijeme patřičné funkce.
Následně zjistíme v jakém adresáři se budeme nacházet. Cestu budeme předávat v proměnné $ad. Pokud obsahuje prázdnou hodnotu, zobrazí se kořenový adresář. Ten získáme z předdefinované proměnné $PATH_TRANSLATED. Ta obsahuje cestu ke scriptu ve kterém je použita a pomocí fce DirName() dostaneme adresář, kde se nachází.
Následuje novinka. Podmíněný neboli ternární operátor (operátor, který má 3 operandy). Popíšeme si ho na našem příkladu. Pokud je první výraz ($ad==DirName($PATH_TRANSLATED)) pravdivý, vykoná se druhý výraz ($zobr=0) jinak se provede třetí ($zobr=1). Je to v zásadě zkrácení podmínky.
Pokračujeme hlavičkou. Tam jsem odstranil použití CSS, abych zachoval vzhled admin centra. Funkci head() tak musíme trochu pozměnit.
|
Po definici funkcí, které nám otevřou okno, kde budeme přidávat soubory a adresáře již následuje samotný výčet souborů. Musíme vyčistit pamět (clearstatcache()) a přepnout se do adresáře, který budeme zobrazovat. Teď si celý adresář načteme do proměnné $b s pomocí funkce Dir(), jejímž parametrem je cesta k adresáři. V následném cyklu si do $c uložíme každou položku adresáře.
Funkce FileType() nám řekne co je položka zač. Může vrátit následující hodnoty fifo (zásobník), char (znakové zařízení), dir (adresář), block (blokové zařízení), link (odkaz), file (soubor) a unknown (neznámý). Pokud nám vrátí možnost "dir", jedná se o adresář. Ale pozor! Tento způsob zobrazování vrací také 2 hodnoty, které nebudeme používat je to ".", což je ukazetel na aktuální adresář a "..", který ukazuje o úroveň výše. Ten se nám hodí, ale pouze pokud se nejedná o kořenový adresář. Právě kvůli tomu jsme používali proměnnou $zobr, kde máme určeno, zda v kořenu jsme nebo ne. U ostatních adresářů použijeme druhou větev. Pokud se bude jednat o něco jiného něž adresáře (v našem případě nic jiného než soubory) a jejich velikost je větší než 0, zobrazíme informace, které jsou dostupné a nabídneme uživateli jeho stáhutí, editaci a smazání. V opačném případě pouze editaci a smazání.
Další script, který budeme potřebovat je adresar.php.
|
Jak jste si všimli, tak se nacházejí, na rozdíl od souboru soubory.php, v adresáři ./admin. Myslím, že zde je vysvětlování zcela zbytečné. Krátce a jednoduše. Po odeslání formuláře, se vytvoří soubor s požadovaným názvem a okno se uzavře. Nebudu zde vysvětlovat třetí parametr fce mkdir(), který udává práva přístupu k souboru. Samozřejmě, že jejich nastavení záleží na Vás.
Poslední potřebný soubor je upload.php, který nám, jak již název říká, slouží k uploadu souborů na server.
|
Script je velice podobný adresar.php jen s tím rozdílem, že místo vytváření adresáře se uploaduje soubor.
Ve všech třech scriptech jste se mohli setkat s funkcí base64_decode() a base64_encode(). Tyto funkce slouží k
zakódování a odkódování textu, terý jim byl předán jako parametr. Používá se pouze pro přenos dat a nikoliv např.
k uložení hesel do databáze, protože metoda Base64 je kódování, které je rozluštitelné. Na rozdíl třeba od MD5(),
která vrací s vysokou pravděpodobností pro každý řetězec jedinečnou kombinaci znaků, která prakticky nejde rozluštit.
Použil jsem ho proto, že kdyby se náhodou někde objevila URL adresa se strukturou našich adresářů jako parametrem, mohlo by lehce
dojít k napadnutí našich souborů. Tento způsob předávání to alespoň trochu znenesnadňuje.
To by tedy bylo k editaci souborů. Příštím, tentokrát již posledním díle, si ukážeme ankety a dám ke stažení kompletní
zdrojový kód našeho RS.
Obsah seriálu (více o seriálu):
- Redakční systém I.
- Redakční systém II.
- Redakční systém III.
- Redakční Systém IV.
- Redakční systém V.
- Redakční systém VI.
- Redakční systém VII.
- Redakční systém VIII
- Redakční systém - tisk
- Redakční systém - generování
- Redakční systém - generování II.
- Redakční systém - generování III.
- Redakční systém - generování IV
- Redakční systém - generování V.
- Redakční systém - krátké zprávy a CSS styly
- Upload obrázků
- Upload - II a logout
- Schvalování článků - II
- Dodatečné přidání obrázku
- Regulární výrazy I
- Regulární výrazy II
- Redakční systém: Fulltext - I.
- Fulltext - II
- Co s RS?
- Optimalizace databáze v RS
- Interní vzkazy - I
- Interní vzkazy - II
- Interní vzkazy - III
- Náměty od čtenářů - I
- Náměty od čtenářů - II
- Náměty od čtenářů - III
- Náměty od čtenářů - IV
- Náhrada FTP
- Ankety
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007