Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Srawdzanie input FILE
Forum PHP.pl > Forum > Przedszkole
kkuubbaa88
witam

w jaki najbezpieczniejszy sposob moza sprawdzic czy wysylany plik przez uzytkownika jest obrazem ? cos wiecej niz nazwa pliku ?
#luq
MIME type
erix
Ale w żadnym wypadku nie ten, który jest w tablicy $_FILES.
kkuubbaa88
to na czym mam uzyc tej funkcji mime_content_type jak nie na tablicy $FILE ?

questionmark.gif
#luq
Chodzi o to żebyś nie wierzył w to co jest w kluczy ['type'] tej tablicy.
kkuubbaa88
Czyli jest do poprawnego uzycia trzeba skorzystać z FILE:
Kod
mime_content_type($_FILES['zdjecie']['name']);

?
!*!
Zawsze trzeba skorzystać z file, jednak nigdy nie należy się o te dane opierać. Sprawdź rozszerzenie pliku, jego szerokość i wysokość, przed przesłaniem możesz zrobić to w JS. A na serwerze sprawdź dokładnie czy ten plik to faktycznie "obrazek". Bo co za problem przesłać jakikolwiek plik który obrazkiem nie jest pomimo że ma odpowiednie rozszerzenia.
erix
Cytat
Bo co za problem przesłać jakikolwiek plik który obrazkiem nie jest pomimo że ma odpowiednie rozszerzenia.

Spreparować MIME, to też nie problem. Poza tym, uploadery flashowe zawsze wysyłają MIME application/octet-stream, więc szkoda czasu na sprawdzanie tego z $_FILES.
kkuubbaa88
kazdy mowic co innego, ze w koncu nie wiem co sprawdzac... moze ktos to zebrac do woreczka i powiedziec jak najlepiej sprawdzic obraz ? czy jest faktycznie obrazem ?
erix
Sprawdzasz faktyczne MIME pliku po stronie serwera. Nie ma sensu sprawdzać tego, co zwraca $_FILES - ani pod kątem rozszerzenia, ani pod kątem MIME. To wszystko można spreparować.
bastard13
Bo tak naprawdę jest wiele rozwiązańsmile.gif
Jeżeli chcesz zrobić dobrą walidację to po prostu musisz poświęcić trochę czasu na poczytanie na ten temat iluś artykułów, odsianie tego, co dla ciebie nie istotne i zastosowanie tego, co uznałeś za ważne.
Ja osobiście polecałbym:
http://www.php.net/manual/en/function.getimagesize.php
oraz
http://www.php.net/manual/en/function.exif-imagetype.php
Możesz sprawdzać też po stronie przeglądarki, ale to nie pozwala zaniedbać walidacji po stronie serwera.
!*!
Cytat(bastard13 @ 24.07.2010, 15:13:41 ) *
Możesz sprawdzać też po stronie przeglądarki, ale to nie pozwala zaniedbać walidacji po stronie serwera.


Ale pozwala na odciążenie serwera winksmiley.jpg Bo jak trafi się laik który swoje foto z aparatu chce przesłać, a te ma ze 4MB to po co serwer, a co za tym idzie transfer ma się dławić? Zostanie to odrzucone już po stronie klienta. Oczywiście! zadbaj o to żeby poprawnie było to sprawdzane po stronie serwera, bo to właśnie serwera masz bronić, a nie tego co dzieje się u użytkownika.
erix
Jak sobie wyobrażasz sprawdzenie MIME po stronie przeglądarki? (nie uwzględniam tu rozszerzenia files w Webkicie i Gecko)
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.