Co można powiedzieć o zmiennej predefiniowanej $_FILES w języku PHP?
A. jest rozszerzoną wersją tablicy
$_SESSION.B. jest kopią tablicy
$_POST.C. zawiera dane przesłane do skryptu z ciasteczka.
D. zawiera informacje o plikach przesłanych do skryptu z formularza.
Poprawna odpowiedź to: zawiera informacje o plikach przesłanych do skryptu z formularza. $_FILES jest superglobalną tablicą PHP tworzoną podczas obsługi formularza wysyłającego pliki. Dla każdego pola typu file PHP zapisuje w niej m.in. nazwę pliku, tymczasową ścieżkę na serwerze, rozmiar, typ MIME oraz kod błędu przesyłania, np. $_FILES['avatar']['tmp_name'] i $_FILES['avatar']['error']. Aby dane trafiły do $_FILES, formularz musi zwykle używać metody POST oraz atrybutu enctype="multipart/form-data". W praktyce tablica ta jest używana przy uploadzie zdjęć, dokumentów PDF lub archiwów. Typowa pułapka polega na szukaniu samego pliku w $_POST - tam trafiają zwykłe pola formularza, a informacje o przesłanych plikach są w $_FILES.
W tym pytaniu łatwo pomylić superglobalne tablice PHP, bo wszystkie mają podobny zapis z podkreśleniem i wielkimi literami. Stwierdzenie „zawiera dane przesłane do skryptu z ciasteczka” opisuje $_COOKIE, czyli dane odczytane z ciasteczek przeglądarki, na przykład identyfikator preferencji użytkownika. Stwierdzenie „jest kopią tablicy $_POST” także jest nietrafne: formularz z plikiem zwykle używa metody POST, ale zwykłe pola tekstowe trafiają do $_POST, a metadane plików do osobnej tablicy $_FILES. Stwierdzenie „jest rozszerzoną wersją tablicy $_SESSION” dotyczy innego mechanizmu - sesja przechowuje dane użytkownika po stronie serwera między żądaniami, na przykład identyfikator zalogowanego konta. Poprawna odpowiedź brzmi: zawiera informacje o plikach przesłanych do skryptu z formularza. Typowy błąd myślowy to kojarzenie wszystkich danych formularza wyłącznie z $_POST, bez rozróżnienia pól tekstowych i przesyłanych plików.