skanuj0183 (6)

skanuj0183 (6)



Rozdział 7. ♦ System plików 195

Funkcja listDir próbuje najpierw zmienić katalog bieżący na katalog przekazany jej w postaci argumentu. Jeśli nie zdoła tego uczynić, wyświetla komunikat o braku dostępu i kończy działanie. Jeśli katalog udało się zmienić, zmiennej di r jest przypisywany wynik działania funkcji getcwd, pobierającej aktualny katalog bieżący. Dzięki temu w dalszej części kodu będzie wykorzystywana bezwzględna nazwa katalogu. Jeśli zatem przekazany do skryptu argument miał postać /usr/tmp/abc/. ,/bcd/, zostanie on zamieniony w tym miejscu na /usr/tmp/bcd/ (zakładając, że w systemie plików serwera znajduje się katalog /usr/tmp/, a w nim podkatalogi o nazwach abc i bcd).

Kolejna instrukcja skryptu to otwarcie katalogu za pomocą funkcji opendir. W przypadku gdyby jej wywołanie zakończyło się niepowodzeniem, do przeglądarki jest wysyłany komunikat o braku dostępu do katalogu i skrypt kończy działanie. Po otwarciu katalogu ciąg zapisany w zmiennej di r zostaje przetworzony w taki sposób, aby w dalszej części skryptu miał jednolitą postać, niezależnie od tego, na jakim systemie został uruchomiony oraz jaki katalog został mu przekazany. Najpierw wszystkie znaki \ zostają zamienione na /, za co odpowiada funkcja str_replace. Następnie sprawdzane jest, czy na końcu ciągu znajduje się znak /. Jeśli tak, jest on usuwany, za co odpowiada wywołanie funkcji substr.

Ta ostatnia czynności jest potrzebna, gdyż w dalszej części skryptu nazwa katalogu bieżącego zapisana w zmiennej di r jest łączona z nazwami znajdujących się w tym katalogu podkatalogów. Pomiędzy te dwie nazwy wstawiony jest znak /. Gdyby w nazwie zapisanej w di r na końcu występowałby znak /, to po czynności łączenia w ciągu wynikowym znalazłyby się dwa znaki / występujące po sobie (np. //usr/tmp zamiast /usr/tmp).

Odczyt zawartości katalogu odbywa się w pętli whi le, w sposób analogiczny do przedstawionego w już prezentowanych przykładach. Nazwa każdego elementu jest zapisywana w zmiennej fi 1 e. Jeśli jest to plik (co jest sprawdzane za pomocą funkcji i s_fi 1 e), nazwa jest po prostu wyświetlana na ekranie. Jeśli jednak jest to katalog (co jest sprawdzane za pomocą funkcji i s_di r), jest konstruowany znacznik <a> w schematycznej postaci:

<a href="http://Ioca 1 host/index.php?dir=pe}najiazwa_katalogu"> nazwa_katalogu </a> przykładowo:

<a href='' http://localhost/index.php?dir-/usr/tmp/abc/"> abc </a>

Ten znacznik jest następnie również wysyłany do przeglądarki.

Obsługa plików

Otwieranie i zamykanie plików

Jeżeli chcemy odczytać dane zawarte w pliku lub też zapisać jakieś dane w pliku, musimy najpierw go otworzyć. Czynność ta jest w PHP wykonywana za pomocą funkcji fopen. Jej schematyczne wywołanie ma postać:

fopen('nazwa'. 'tryb')


Wyszukiwarka

Podobne podstrony:
skanuj0185 (7) Rozdział 7. ♦ System plików 197 Tabela 7.1. Wartości parametru tryb funkcji fopen Try
skanuj0207 (4) Rozdział 7. ♦ System plików 219 1.    Logowanie zakończyło się sukcese
13349 skanuj0191 (5) Rozdział 7. ♦ System plików 203 Jeszcze prostsze jest użycie funkcji readfile l
35824 skanuj0189 (4) Rozdział 7. ♦ System plików 201 Listing 7.11. Odczyt zawartości pliku za pomocą


więcej podobnych podstron