Rozdział 5. ♦ Przetwarzanie danych z przeglądarki 155
header("Content-Type: application/octet-stream"): heade r("Content-Length: $s i ze:"):
headerCContent-Disposition: attachment; filename=$name"); echo tcontents:
if(isSet($_GET['fileid'])){ sendt $_GET['fi 1ei d']):
else{
headerCLocation: 404.html"):
Główną część skryptu zajmuje funkcja send odpowiedzialna za wykonanie większości operacji, jednak wykonywanie kodu rozpoczyna się na końcu pliku od sprawdzenia, czy został przekazany parametr o nazwie fi leid. Jeśli nie, następuje przekierowanie do pliku o nazwie 404.html, który powinien zawierać informację dla użytkownika o błędzie. Przykładowa treść pliku 404.html (odwołanie, do którego jest również wykorzystywane w innych częściach skryptu) jest widoczna na listingu 5.16, a efekt wysłania tego kodu do przeglądarki na rysunku 5.9. Jeśli jednak parametr fi leid został przekazany skryptowi —jest wykonywana funkcja send.
Listing 5.16. Przykładowa treść pliku 404.html
<html>
<head>
<title>Brak pliku</title>
</head>
<body>
<hl align='center’>Nie znaleziono pliku!</hl> </body>
</html>
88 _ |g| x|
Plik Łdyoa Widok Pioojdó Zakladk: Paw
8* Rozpoczrś) przygód.. - . J Aktualności
Rysunek 5.9. Efekt przekierowania do pliku 404.html zaprezentowanego na listingu 5.16
Funkcja send przyjmuje jako parametr identyfikator pliku, który ma zostać wysłany. Jej działanie rozpoczyna się od otwarcia pliku downloads.txt. Jeśli otwarcie się nie powiedzie (funkcja zwróci wartość fal se zamiast deskryptora pliku), następuje przekierowanie do wspomnianego już wyżej pliku 4Q4.html, choć oczywiście można tu również