Sprawdzenie poprawności przesłanego pliku

Założenie: Nauczymy się, jak sprawdzić, czy przesłany plik ma poprawny typ i rozmiar.

Krok po kroku:

  1. Sprawdzenie, czy plik został przesłany:
    
    if (isset($_FILES['plik'])) {
      // Plik został przesłany
    } else {
      echo "Błąd: Brak pliku.";
      exit;
    }
    					

    Ten fragment kodu sprawdza, czy zmienna `$_FILES[‘plik’]` istnieje. Zmienna ta jest automatycznie tworzona przez PHP, gdy formularz zawiera element ``.

  2. Sprawdzenie typu pliku:
    
    $dozwolone_typy = ['image/jpeg', 'image/png'];
    $typ_pliku = $_FILES['plik']['type'];
    
    if (!in_array($typ_pliku, $dozwolone_typy)) {
      echo "Błąd: Nieprawidłowy typ pliku.";
      exit;
    }
    					

    Tutaj definiujemy tablicę dozwolonych typów plików i sprawdzamy, czy typ przesłanego pliku znajduje się w tej tablicy.

  3. Sprawdzenie rozmiaru pliku:
    
    $maksymalny_rozmiar = 2 * 1024 * 1024; // 2 MB
    $rozmiar_pliku = $_FILES['plik']['size'];
    
    if ($rozmiar_pliku > $maksymalny_rozmiar) {
      echo "Błąd: Plik jest za duży.";
      exit;
    }
    					

    Ten kod sprawdza, czy rozmiar pliku (w bajtach) nie przekracza zdefiniowanego limitu (2 MB w tym przykładzie).

  4. Przetwarzanie pliku (jeśli wszystko jest OK):
    
    $nazwa_pliku = $_FILES['plik']['name'];
    $tymczasowa_nazwa = $_FILES['plik']['tmp_name'];
    $cel = 'uploads/' . $nazwa_pliku; // ścieżka docelowa
    
    if (move_uploaded_file($tymczasowa_nazwa, $cel)) {
      echo "Plik został przesłany pomyślnie!";
    } else {
      echo "Błąd podczas przesyłania pliku.";
    }
    					

    Jeśli wszystkie poprzednie kroki zakończyły się sukcesem, ten kod przenosi plik z tymczasowej lokalizacji na serwerze do wybranego katalogu.

Pamiętaj o utworzeniu katalogu “uploads” w tym samym katalogu co skrypt.

Ten przykład pokazuje podstawy weryfikacji przesłanych plików. Zachęcamy do dalszego zgłębiania tematu, aby poznać bardziej zaawansowane techniki bezpieczeństwa i obsługi plików.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *