skanuj0175 (8)

skanuj0175 (8)



Rozdział 7. ♦ System plików 187

Rysunek 7.1.

Efekt działania skryptu

wyświetlającego zawartość wybranego katalogu serwera


u @w psr


ilsijsi

©


5* B!*i» W* ftMMł 4*S* tisreęffiM pcmot

: - - & t © 1 -

Itmpupl


404.html


download.php

downloads

do\vnloads.txt

httpd-2.0.52-3.i386.ipm

hltpd-2.0.52.lar.gz

httpd-devel-2.0.52-3.i386.tpm

imagel.jpg

index.html

index.php

MySQL-client-4.1.8-0.i386.rpm MySQL-devd-4.1.8-0.i386.rpm MySQL-server-4.1.8-0.i38d.rpm


Odczyt zawartości katalogu odbywa się w pętli whi 1 e. Wynik każdego wywołania funkcji readdi r (czyli nazwa każdego kolejnego elementu katalogu) jest przypisywany zmiennej file. Pętla kończy się, kiedy file będzie równe false. Należy zwrócić uwagę na to, że do stwierdzenia, czy file jest różne od false, jest wykorzystywany operator !— (a nie !=). Wykorzystanie operatora != mogłoby spowodować błędy wynikające z konwersji niektórych nazw plików na wartość false (por. rozdział 6., sekcja „Porównywanie ciągów”). Przykładowo, gdyby w przetwarzanym katalogu znajdował się plik

0    nazwie 0 (cyfra zero), po jego odczytaniu pętla zakończyłaby działanie, gdyż konwersja ciągu 0 na typ boolean daje w wyniku wartość false.

Warto również zwrócić uwagę, że pierwsze dwie pozycje na liście to . i .., które oznaczają katalog bieżący oraz katalog nadrzędny. Jeśli chcemy uniknąć ich wyświetlania, trzeba zastosować dodatkową instrukcję warunkową, np. umieszczoną wewnątrz pętli whi 1 e. Taka pętla mogłaby mieć np. następującą postać:

whi 1 e ((Sfile = readdir($fd)) 1— false){ ifdfile !-    && Sfile != "...“)

echo("$file<br>\n"):

}

W PHP w wersji 5. została wprowadzona nowa funkcja o nazwie scandir, która za jednym wywołaniem potrafi pobrać zawartość wybranego katalogu i zwrócić ją w postaci tablicy. Co więcej, uzyskane nazwy plików i katalogów są automatycznie sortowane. Schematyczne wywołanie funkcji scandir ma postać: scandir('nazwa'[. sortowanie’])

gdzie nazwa określa katalog, a sortowanie — sposób sortowania wyników. Parametr sortowanie jest opcjonalny; jeżeli zostanie pominięty w wywołaniu, nazwy zostaną posortowane w porządku rosnącym, jeżeli natomiast parametr sortowanie będzie obecny

1    będzie miał wartość 1, nazwy zostaną posortowanie w porządku malejącym. Sposób wykorzystania funkcji scandir do pobrania i wyświetlania zawartości katalogu bieżącego przedstawia skrypt przedstawiony na listingu 7.2.


Wyszukiwarka

Podobne podstrony:
skanuj0209 (4) Rozdział 7. ♦ System plików 221 Rysunek 7.13. Przykładowy efekt działania skryptu&nbs
skanuj0199 (5) Rozdział 7. ♦ System plików 211 Rysunek 7.9. Przykładowy -1b£i o ; Edycja a** P
skanuj0201 (4) Rozdział 7. ♦ System plików 213 a zatem jeśli do skryptu ankieta.php zostanie przekaz
32851 skanuj0187 (5) Rozdział 7. ♦ System plików 199 Rozdział 7. ♦ System plików 199 Rysunek 7.4. Pr


więcej podobnych podstron