57188 skanuj0139 (14)

57188 skanuj0139 (14)



150 PHP i MySQL dla każdego

Jeśli plik nie istnieje, do przeglądarki wysyłana jest stosowna informacja i funkcja kończy działanie (wywoływana jest instrukcja return). Jeśli plik istnieje, jest wysyłany za pomocą techniki analogicznej do zaprezentowanej we wcześniejszym przykładzie.

Automatyczne generowanie listy plików

Poprzedni przykład oferował bezpieczne pobieranie plików; nie był jednak wygodny, kiedy ich liczba była duża, bądź też lista plików do pobrania często zmieniała swoją zawartość. Przy każdym dodaniu lub usunięciu pliku wymagał bowiem modyfikacji zarówno kodu HTML generującego listę, jak i kodu funkcji weryfikującej poprawność danych w skrypcie wysyłającym plik do użytkownika. Skoro tak, spróbujmy napisać bardziej uniwersalny kod, który automatycznie uwzględni wszystkie zmiany na liście plików.

Napiszemy dwa współpracujące ze sobą skrypty: index.php i downloadphp. Pierwszy z nich będzie odpowiedzialny za generowanie listy plików, drugi za wysyłanie pliku, o nazwie przekazanej w postaci parametru, do przeglądarki użytkownika. Skrypt index.php będzie pobierał nazwy plików z wybranego katalogu serwera i tworzył z nich znaczniki <a> w schematycznej postaci:

<a href="http://adres.serwera/dom]oad.php?name=nazwa_pliku"> czyli takiej, jak w wyżej zaprezentowanym przykładzie. Kod tego skryptu został przedstawiony na listingu 5.12.

Listing 5.12. Skrypt automatycznie generujący listą plików_

<htm!>

<head>

<title>Lista plików do pobrania</title>

</head>

<body>

<?php

tfilesPath = ''./downloads/": function printList(Spath)

{

$fd - opendir(Jpath): if(!$fd) return false: while ((Jfile - readdir(Sfd)) !== fa!se){ i f(i s_dir(tpath.$fi 1e)) conti nue: echo(’’<a href=\ "http://127.0.0.1/download. php?name-"): echot"Sfi ie\">$file</a><br>"):

}

c!osedir($fd):

}

printListdfilesPath):

</body>

</html>

Zmienna fi lesPath powinna wskazywać na katalog, w którym znajdują się pliki, przeznaczone do udostępniania osobom odwiedzającym stronę. Za pobranie listy plików i wysłanie ich do przeglądarki w postaci odnośników odpowiada funkcja printList.


Wyszukiwarka

Podobne podstrony:
skanuj0133 (14) 144 PHP i MySQL dla każdego if($_FILES[ plikl ][,error ] — UPL0A0_ERR_0K){ $new_name
skanuj0135 (14) 146 PHP i MySQL dla każdego 146 PHP i MySQL dla każdego Rysunek 5.6. Okno dialogowe
19717 skanuj0137 (14) 148 PHP i MySQL dla każdego Rysunek 5.7. Lista plików Pik Edycja Wjdok Przej
64561 skanuj0131 (14) 142 PHP i MySQL dla każdego danych. Maksymalna wielkość pliku zależy również o
skanuj0119 (19) 130 PHP i MySQL dla każdego Listing 4.22. Wykorzystanie konstruktora do inicjacji pó
skanuj0010 (406) 20 PHP i MySQL dla każdego Jak widać nie ma w nim żadnych znaczników związanych z P
skanuj0017 (284) 28 PHP i MySQL dla każdego dla systemu Linux i: include path = :c:phpincludes"

więcej podobnych podstron