PHP i MySQL dla każdego
Deskryptor zwrócony przez opendi r może zostać wykorzystany do odczytu zawartości katalogu za pomocą funkcji readdir. Każde wywołanie tej funkcji zwraca nazwę kolejnego elementu (pliku lub podkatalogu) lub wartość fal se, jeżeli zostały odczytane wszystkie elementy katalogu. Wynika z tego, że odczyt zawartości najlepiej przeprowadzić w pętli whi 1 e.
Po odczytaniu zawartości katalogu należy go zamknąć za pomocą funkcji closedir, przekazując jej w postaci argumentu deskryptor otrzymany przy wywołaniu opendi r. Zamknięcie oznacza w tym przypadku zwolnienie zasobów pobranych przez skrypt podczas wywołań opendi r i readdi r. Wywołanie closedi r nie zwraca żadnej wartości.
Uzbrojeni we wszystkie powyższe wiadomości bez problemów powinniśmy napisać skrypt, który odczyta zawartość wskazanego katalogu i wyświetli ją na ekranie przeglądarki. Takie zadanie realizuje kod przedstawiony na listingu 7.1. Przykładowy efekt działania skryptu został natomiast zaprezentowany na rysunku 7.1.
Listing 7.1. Skrypt wyświetlający zawartość wybranego katalogu
<htm1>
<head>
<title>Zawartość wybranego katalogu</title>
</head>
<body>
<?php $dir =
if(!($fd = opendir($dir))) exit("Nie mogę otworzyć katalogu $dir!"):
while ((Sfile - readdir($fd)) !— false) echo("$file<br>\n"):
closedir($fd):
?>
</body>
</html>
Nazwa katalogu, którego zawartość ma zostać wyświetlona, jest zapisywana w zmiennej dir. W przypadku skryptu z listingu 7.1 jest to katalog bieżący, oznaczany ./. Katalog wskazywany przez di r jest otwierany za pomocą instrukcji złożonej: if(!($fd - opendir($dir))) ex1t("N1e mogę otworzyć katalogu $dir!"):
Najpierw wywoływana jest funkcja opendi r z argumentem di r, a wynik jej wywołania przypisywany zmiennej fd. Następnie jest wykonywane sprawdzenie, czy wartość fd jest różna od false. Jeśli tak, następuje przejście do kolejnej instrukcji skryptu. Jeśli jednak fd jest równe false, jest wywoływana funkcja1 exit kończąca wykonywanie skryptu i wysyłająca do standardowego wyjścia komunikat o błędzie2.
W rzeczywistości exit jest konstrukcjąjęzyka, której używa się tak jak funkcji.
Zamiast exit często stosuje się również jej alias die.