V minulé lekci jsme si uvedli některé příkazy pro práci se soubory, další příkazy PHP pro práci s adresáři využijeme při downloadu souborů (stahování souborů ze serveru).

Adresáře

Chceme-li pracovat s nějakým adresářem, musíme ho otevřít příkazem OpenDir(), tím se vytvoří tzv. ukazatel (podobně jako u souboru), který můžeme používat v dalších funkcích, například:
$adresar = opendir("."); - otevření aktuálního adresáře (tečka představuje aktuální adresář), ukazatel je uložený v proměnné $adresar

Vytvořený ukazatel (jako příklad uvedený $adresar) potřebujeme pro některé další funkce:
ReadDir($adresar) - funkce vrací název dalšího souboru v adresáři, pokud již byly všechny soubory přečteny, vrací funkce hodnotu false
RewindDir($adresar) - po zavolání této funkce budou položky adresáře čtené znovu od začátku
CloseDir($adresar) - uzavření adresáře

RmDir (string) - odstranění adresáře s daným názvem
MkDir(string) - vytvoření adresáře, případně s právy (viz níže u ChMod), například: mkdir("test", 0777);
ChDir(string) - změna adresáře
ChMod(string,číslo) - změní práva k souboru, nefunguje na Windows systémech (tam je potřeba "ručně" třeba v FTP klientech), číslo začíná nulou a pak následují tři číslice pro vlastníka, skupinu a všechny uživatele, číslice jsou součtem: 1 - spuštění, 2 - zápis, 4 - čtení, například ChMod("refreshhdb",0755); jsou pro vlastníka nastavená plná práva a pro ostatní čtení a spouštění

Výpis adresáře pro download

Následující konkrétní příklad zpracoval P. Bartoň, 9.C, šk. rok 2007/8. Vypíše obsah adresáře s tím, že názvy souborů vloží do odkazů, takže je možné je "stahovat".

<?php
$adresar = opendir("./soubory/"); //adresář soubory je podadresář aktuálního
$num=0;
while ($soubor = readdir($adresar)) //dokud není adresář přečtený
{
$num++;
if ($num!=1 and $num!=2)
{
?>
<a href="./soubory/<?php echo($soubor);?>"><?php echo($soubor);?></a>
<br>
<?php
}
}
?>


Všimněte si, že autor vynechává první dvě položky výpisu ( if ($num!=1 and $num!=2) ), které jsou vždy tečka (.) - aktuální adresář a dvě tečky (..) - nadadresář. Další novinka tohoto scriptu je kombinace PHP a HTML, které jsem se zatím vyhýbal - všimněte si, že v první části scriptu jsou neukončené dvě složené závorky {, následuje ukončení první části scriptu ?> , další část obsahuje HTML (s vloženými PHP výpisy), po něm zase PHP, ve kterém jsou jen ukončeny složené závorky. Samozřejmě mohla být řešení různá, ale podobné kombinace lze často využít a nejspíš se s nimi setkáte.


Úkoly:

Úkol (2 body)+prémie za další doplňky výpisu

Vytvoř script pro výpis adresáře s uloženými soubory z minulé lekce. Doplň ukázku o výpis počtu souborů.

Název školy:Základní škola, Hradec Králové, M. Horákové 258
Název projektu:EU peníze školám
Číslo projektu:CZ.1.07/1.4.00/21.2575
Téma:Programování v PHP
Název:VY_32_INOVACE_17_10A_PHP17
Autor:Pavel Petr
Použité zdroje: Není-li uvedeno jinak, jsou všechny ilustrační obrázky dílem autora.