Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Blokowanie wysyłania określonych plików w formularzu
Forum PHP.pl > Forum > Przedszkole
mp
Witam.

W jaki sposób można zablokować wysłanie plików z formularza o rozszerzeniu innym niż JPG, GIF, PNG ?


  1. <?
  2.  
  3. list($width, $height, $type, $attr) = getimagesize($ImageName);
  4.  
  5. if ($type > 3) {
  6. echo "Przesłany obraz nie jest w formacie GIF, JPG lub PNG " ;
  7. }
  8.  
  9. ?>


powyższy fragment kodu faktycznie blokuje wysyłanie plików ale tylko graficznych np. bmp, swf, tiff itp... , lecz nie blouje plików np. pdf, txt i każdego innego nie związanego z typem plików które określa zmienna $type.


worriedsmiley.gif questionmark.gif

Pozdrawiam


Poprawiłem
~mike_mech
mike
A wystarczyłoby poczytać dokładniej dokumentację.
getimagesize()
Cytat
If accessing the filename image is impossible, or if it isn't a valid picture, getimagesize() will return FALSE and generate an error of level E_WARNING.
mp
przedszkolacy" jeszcze nie znają angielskiego, a manual jest "in engish " .
sadsmiley02.gif
mike
  1. <?php
  2.  
  3. $arrInfo = @getimagesize($ImageName);
  4.  
  5. if( $arrInfo === false )
  6. {
  7. echo 'To nie jest plik graficzny';
  8. }
  9. else
  10. {
  11. if( $arrInfo[ 'type' ] > 3 )
  12. {
  13. echo 'Przesłany obraz nie jest w formacie GIF, JPG lub PNG';
  14. }
  15. else
  16. {
  17. echo 'OK';
  18. }
  19. }
  20.  
  21. ?>
siemakuba
skoro plik jest przesylany, to zakladam ze za pomoca formualrza.
Masz wiec informacje o nim w tablicy $_FILES. Masz tam miedzy innymi klucz type, który określa mime-type przeslanego pliku. Wiedzac to, możesz sobie zrobić wedle uznania jakąś blackliste (pliki, których nie można przesyłać) bądź też whiteliste (tylko takie pliki można przesyłać). W tych listach definiujesz dopuszczone / zablokowane typy plikow i gotowe.

Jezeli chcesz tylko i wylacznie sprawdzac czy to obrazek, to tak jak @mike_mech napisał.

pozdr.
mike
Cytat(siemakuba @ 24.05.2006, 23:19 ) *
skoro plik jest przesylany, to zakladam ze za pomoca formualrza.
Masz wiec informacje o nim w tablicy $_FILES. Masz tam miedzy innymi klucz type, który określa mime-type przeslanego pliku.

A ja to rozwiązanie uznaje jako ostateczne.
Nie wiem czy wiesz, ale przeglądarki określają ten typ i wysyłają na podstawie ... rozrszerzenia.

Oznacza to, że Twoja aplikacja łyknie jak ciepłą bułeczkę plik wredny_wirus_z_rozszerzeniem.jpg

Jednym słowem, nie ufajcie typom MIME podawanym przez przeglądarkę.
Powinno się stosować mime_content_type() lub getimagesize()
siemakuba
Cytat(mike_mech @ 24.05.2006, 23:32 ) *
Nie wiem czy wiesz, ale przeglądarki określają ten typ i wysyłają na podstawie ... rozrszerzenia.

o, tego nie widziałem. podane przeze mnie rozwiązanie traci więc tak jakby ważność.
pozdr.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.