skanuj0143 (13)

skanuj0143 (13)



154 PHP i MySQL dla każdego

Za wygenerowanie listy odnośników odpowiada funkcja printLi st. Plik downloads.txt jest otwierany za pomocą funkcji fopen. Kolejne wiersze tekstu są wczytywane w pętli while za pomocą funkcji fgets i przypisywane zmiennej linę. Ciąg znaków zapisany w 1 i ne jest następnie dzielony na cztery części względem znaków średnika, za co odpowiada funkcja explode. Wynikiem jej działania jest tablica, w której kolejnych indeksach znajdują się kolejne elementy ciągu zapisanego w 1 i ne. I tak pod indeksem 0 znajdzie się identyfikator pliku, pod indeksem 1 — nazwa pliku, pod indeksem 2 — katalog pliku, a pod indeksem 3 — opis pliku. Na podstawie tych danych jest następnie konstruowany odnośnik, poprzedzony znacznikiem <li> odpowiedzialnym za uformowanie elementu listy. Uzyskany ciąg znaków jest wysyłany do przeglądarki za pomocą instrukcji echo.

Skoro opracowaliśmy kod odpowiedzialny za utworzenie listy odnośników pozwalających na pobieranie plików, możemy przystąpić do napisania skryptu zajmującego się wysyłaniem plików. Jego zadaniem będzie: odebranie identyfikatora pliku przekazanego w postaci parametru o nazwie fileid, sprawdzenie, czy plik o takim identyfikatorze faktycznie istnieje, oraz wysłanie pliku do przeglądarki użytkownika. Treść tak działającego skryptu jest widoczna na listingu 5.15.

Listing 5.15. Skrypt wysyłający plik o zadanym identyfikatorze_

<?php

function send($id)

{

if(!($fd - fopenCdownloads.txt1'.”r"))){ headerCLocation: 404.html"): return:

}

Jfound - false:

while (!feof ($fd)){

$line = trim(fgets($fd)):

$arr = explode(":". Sline): if(count($arr) -- 4){

1f($id — $arr[0]){

Jfound = true:

$path = $arr[2];

$name = $arr[l]; break:

}

}

}

if(dtfound) || (!file_exists($path.$name))){ headerC"Locati on: 404.html"): return;

}

Sfd = fopen(Jpath.Sname, "r"):

Ssize = filesize($path.$name):

Scontents = fread($fd. Ssize);

fclose(Sfd);


Wyszukiwarka

Podobne podstrony:
skanuj0059 (47) 72 PHP i MySQL dla każdego Oznacza ona: jeżeli warunek jest prawdziwy, podstaw za wa
skanuj0017 (284) 28 PHP i MySQL dla każdego dla systemu Linux i: include path = :c:phpincludes"

więcej podobnych podstron