Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Upload zdjęć - problem z ograniczeniem wielkości pliku
Forum PHP.pl > Forum > Przedszkole
Darekxp
Witam! Mam problem z uploadem plików, wszystko się wgrywa, tworzenie miniaturek działa również prawidłowo, ale niestety ograniczenie wielkości pliku już nie.

Teoretycznie mam ustawione max 400kb i gdy zdjęcie jest za duże wyświetla się o tym komunikat, ale zdjęcie i tak zostaje "po cichu" wrzucone na serwer nawet jeśli jego rozmiar to kilka mb. W czym tkwi problem? Za pomoc z góry dziękuje:)


  1. <?
  2.  
  3.  
  4.  
  5. if(!is_uploaded_file($_FILES[plik][tmp_name])){
  6. echo show_error("Wybierz zdjęcie!"); echo"<br>Możesz dodawać pliki wyłącznie z rozszerzeniem .jpg .jpeg .png .gif<br>";
  7.  
  8. }
  9. if($_FILES[plik][error] != 0 OR $_FILES['plik']['size'] > 400*1024){
  10. echo show_error("Wystąpił błąd podczas przesyłania pliku!"); echo "<br>
  11. Sprawdź czy plik nie jest za duży i spróbuj ponownie! Maxymalny rozmiar to 400kb<br>
  12. ";
  13. }
  14.  
  15. if($_FILES[plik][type] == "image/jpg" ||
  16. $_FILES[plik][type] == "image/jpeg" ||
  17. $_FILES[plik][type] == "image/pjpeg" ||
  18. $_FILES[plik][type] == "image/pjpg" ||
  19. $_FILES[plik][type] == "image/png" ||
  20. $_FILES[plik][type] == "image/gif"){
  21.  
  22. if(move_uploaded_file($_FILES[plik][tmp_name], "zdjecia/ogloszenia/".$_FILES[plik][name])){
  23.  
  24.  
  25. chmod("./zdjecia/ogloszenia/".$_FILES['plik']['name'], 0777);
  26.  
  27. require_once './php_class/ThumbLib.inc.php';
  28.  
  29. $thumb = PhpThumbFactory::create('zdjecia/ogloszenia/'.$_FILES['plik']['name']);
  30. $thumb->resize(120, 90);
  31. $thumb->save("zdjecia/ogloszenia/thumbs/".$_FILES['plik']['name'], 'jpg');
  32.  
  33. chmod("./zdjecia/ogloszenia/".$_FILES[plik][name], 0644);
  34.  
  35.  
  36.  
  37. if($_POST['temat'] != "" && $_POST['imie'] != "" && $_POST['miasto'] != "" && $_POST['opis'] != "")
  38. {
  39.  
  40. mysql_query("INSERT INTO ogloszenia (ogloszenieId, ogloszenieNazwa, ogloszenieOpis, ogloszenieDodal, ogloszenieMiasto, ogloszenieCena, ogloszenieTelefon, ogloszenieEmail, ogloszenieGG, ogloszenieDzial, ogloszenieKategoria, ogloszenieData, ogloszenieFoto, ogloszenieIP) VALUES('', '".zapytanie($_POST['temat'])."', '".zapytanie($_POST['opis'])."', '".zapytanie($_POST['imie'])."', '".zapytanie($_POST['miasto'])."', '".zapytanie($_POST['cena'])."', '".zapytanie($_POST['telefon'])."', '".zapytanie($_POST['email'])."', '".zapytanie($_POST['gg'])."', '".zapytanie($_POST['ogloszenieDzial'])."', '".zapytanie($_POST['ogloszenieKategoria'])."', '".date("d-m-Y")."', '".zapytanie($_FILES['plik']['name'])."', '".$_SERVER[REMOTE_ADDR]."')");
  41.  
  42. echo show_ok("Dodano Twoje Ogłoszenie!"); echo "<br />
  43. <a href=http://www.mojastrona.pl/ogloszenia class=blue title='Przejdź do serwisu ogłoszeń'> Zobacz ogłoszenia </a><br><br>
  44. <a href=http://www.mojastrona.pl/dodaj-ogloszenie class=blue title='Dodaj kolejne ogłoszenie'> Dodaj kolejne ogłoszenie </a>
  45. ";
  46.  
  47.  
  48. }
  49.  
  50. else
  51. {
  52. echo show_error("Wypełnij pola oznaczone *");
  53. }
  54.  
  55.  
  56.  
  57. }else{
  58. echo show_error("Błąd ładowania zdjęcia!");
  59.  
  60.  
  61. }
  62. }else{
  63. echo show_error("Niedozwolony format pliku!"); echo "<br>Możesz dodawać pliki wyłącznie z rozszerzeniem .jpg .jpeg .png .gif<br>";
  64.  
  65. }
  66.  
  67. ?>
Pilsener
Cytat
i gdy zdjęcie jest za duże wyświetla się o tym komunikat, ale zdjęcie i tak zostaje "po cichu" wrzucone na serwer nawet jeśli jego rozmiar to kilka mb
- bo wyświetlasz komunikat tylko i nic nie robisz, by zatrzymać dodawanie fotki. Algorytm powinien działać mniej więcej tak:
  1. $walidacja = true;
  2. //wykonujemy etap 1
  3. if($walidacja){
  4. //wykonujemy etap 2
  5. if($etap2=='porazka'){
  6. $walidacja = false;
  7. $errors[] = 'jakis blad';
  8. }
  9. }
  10. if($walidacja){
  11. //wykonujemy etap 3
  12. if($etap3=='porazka'){
  13. $walidacja = false;
  14. $errors[] = 'jakis blad';
  15. }
  16. }
  17. //i tak dalej krok po kroku, jeśli na jakimś etapie walidacja się nie uda, to pozostałe etapy nie powinny byc wykonywane


Gdzieś na końcu sobie wyświetlisz co trzeba. I radzę nie polegać tylko na takiej walidacji, podstawa to wrzucanie pliku do bezpiecznego folderu (poza parser i http), potem jego sprawdzenie choćby tym:
http://pl.php.net/manual/pl/ref.fileinfo.php

Jeśli plik wygląda na ok to dodajesz info do bazy i dopiero PO SPRAWDZENIU, że rekord dodał się poprawnie wywalasz info, że upload ok. Przy pobieraniu pliku podobnie: nie żadne http/www/pliczor.rar tylko pobierz.php?id=123, otwierasz plik i kawałek po kawałku wysyłasz do użytkownika z odpowiednim headerem (takim, jaki user zadeklarował uploadując plik)
Jeśli w pliku .jpg user dał kod php to masz go gdzieś po prostu, wysyłasz mu ten kod z powrotem i się śmiejesz.
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.