Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Upload plików
Forum PHP.pl > Forum > Przedszkole
xxdrago
Witam, w planach mam zrobić upload plików (zdjęć + plików). Problem polega na tym, że nie wiem jak najlepiej zabezpieczyć skrypt, myślałem nad sprawdzaniem mime type, ale wydaje mi się , że da się to ominąć.


  1. <?php
  2.  
  3. $uploaded = 0;
  4. $message = array();
  5. foreach ($_FILES['userfile']['name'] as $i => $name) {
  6.  
  7. if ($_FILES['userfile']['error'][$i] == 4) {
  8. continue;
  9. }
  10.  
  11. if ($_FILES['userfile']['error'][$i] == 0) {
  12.  
  13. if ($_FILES['userfile']['size'][$i] > 99439443) {
  14. $message[] = "$name exceeded file limit.";
  15. continue;
  16. }
  17.  
  18. echo $_FILES['userfile']['type'][$i];
  19.  
  20. $uploaded++;
  21. }
  22. }
  23.  
  24.  
  25. echo 'ok';
  26. foreach ($message as $error) {
  27. echo $error;
  28. }
  29.  
  30. ?>
mokry
Zamiast odkrywać koło na nowo skorzystaj z czegoś sprawdzonego, gotowego i łatwego.

Np.: http://www.verot.net/php_class_upload.htm
wNogachSpisz
A kto tą biblitekę pisał? Jakiś garażowy chłoptaś? Upload plików przemieszany z manipulacją obrazkami? Nie dziękuję. W sieci jest dużo dobrego softu do obsługi uploadu plików, ale ww. bbiliteka nie zalicza się do tego grona.
mokry
Owszem, w sieci jest bardzo dużo dobrych bibliotek/klas, które pomagają podczas uploadu plików i zdjęć na serwer.
Czy przedstawiony przeze mnie przykład klasy jest dobry czy też nie jest tak na prawdę kwestią gustu i tego, co faktycznie jest akurat potrzebne danemu programiście. Nie zamierzam się tutaj wdawać w dyskusję, czy jest to dobry/lepszy/najlepszy kod, jednak na pewno jest sprawdzony, działa stabilnie i posiada sporo możlwiości, w szczególności jeśli chodzi o możliwość manipulacji na obrazach.
wNogachSpisz
To może zrób forka w którym dopiszesz do niej funkcje wynoszenia śmieci.
W twoim guście jest upychanie do jednej bibliteki zadań ze sobą niezwiązanych?

Dla nooba może i takie rozwiąznie jest wystarczające, ale gdy aplikacja zacyzna się powiększać i następuje chwila w której musisz przeprowadzić jakieś operacje na obrazku dawno po uploadzie, to co? kopiujesz ten sam kod do innej bibliteki? Gratulacje, jestes zwolniony.
mokry
Przede wszystkim proponuję nie zbaczać z tematu i nie robić off-topa.
tak, dla noob'a takie rozwiązanie jest w zupełności wystarczające. I jeżeli ktoś nim jest zadaje właśnie takie pytania o upload jakie tutaj padło. I takim osobom daje się łatwe rozwiązania, które mogą szybko zastosować w praktyce. Ot tyle. A jeżeli chesz zacząć jakąkolwiek dyskusje na temat dobrych praktyk i zasad w programowaniu oraz odpowiednim podejściu do modelowania i projektowania aplikacji to zapraszam do oddzielnego tematu.
xxdrago
Panowie, bez obrazy ale siedzę już w php pare lat. Podglądnę rozwiązanie z tamtej klasy, ale raczej wolałbym coś pod siebie napisaćsmile.gif więc jak najlepiej zabezpieczyć ten formularz?
pyro
Cytat(xxdrago @ 3.01.2013, 01:13:26 ) *
Witam, w planach mam zrobić upload plików (zdjęć + plików). Problem polega na tym, że nie wiem jak najlepiej zabezpieczyć skrypt, myślałem nad sprawdzaniem mime type, ale wydaje mi się , że da się to ominąć.


Cytat
Panowie, bez obrazy ale siedzę już w php pare lat.


No to chyba przez te wszystkie lata jedyne co robiłeś, to pisałeś proste kalkulatory w PHP.

Co do tematu - sprawdzanie rozszerzenia + rozmiarów obrazka to podstawa + is_uploaded_file(). W takim wypadku już nic się nie stanie, chyba, że nieumiejętnie nadasz możliwość wykonywania skryptów PHP np. w plikach graficznych w Apache / .htaccess.
xxdrago
pyro, wiesz co wole się zapytać, niż potem płakać nad rozlanym mlekiem. I raczej pisało się różne rzeczy ale cały czas unikałem tego uploadu.
A da się jakość sprawdzić czy w obrazku jest zawarty kod php?

pyro
Cytat(xxdrago @ 3.01.2013, 17:16:59 ) *
pyro, wiesz co wole się zapytać, niż potem płakać nad rozlanym mlekiem. I raczej pisało się różne rzeczy ale cały czas unikałem tego uploadu.
A da się jakość sprawdzić czy w obrazku jest zawarty kod php?


Zapytać jak najbardziej, wręcz wskazane, ale z tym "siedzeniem przez kilka lat w PHP" to zwykła ściema, co potwierdziłeś swoim następnym pytaniem czysto początkującego.

A odpowiadając na to pytanie: fread(), fgets(), file_get_contents(), stripos(), stristr(), preg_match(), ...
xxdrago
W php siedzę od daty rejestracji: 27.07.2010, to co ty dałeś to sprawdziłbym czy w pliku np. *txt jest kod, a mi chodzi o taki kod typu komentarz. Każdy program dodaje komentarz do pliku np. gif. Ten komentarz można podrobić i plik gif będzie działał podobnie na zasadzie pliku php. Tak gdzieś przynajmniej wyczytałem.
pyro
Oczywiście tego, że w/w funkcjami da się otwierać inne pliki niż .txt też nie słyszałeś? Wszystkie pliki, które masz na swoim komputerze da się otworzyć notatnikiem, że tak to ujmę.

// EDIT

Zrób sobie plik .gif o rozmiarach np. 5x5 px, dodaj w komentarzu jakikolwiek kod PHP (np. za pomocą GIMP) i zobacz gdzie on wyląduje.
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.