Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML][MYSQL] upload i wielkość pliku - problem
Forum PHP.pl > Forum > Przedszkole
Darekxp
Witam! Skrypt działa, no co prawda można by go poprawić i zabezpieczyć, ale to potem bo narazie największym problemem jest ograniczenie wielkości pliku przez MAX_FILE_SIZE bo poprostu nie działa. czytałem że zależy to również od przeglądarki ale jak to zabezpieczyć żeby pliki były maxymalnie do 200kb;) za pomoc z góry dzięki!

  1. <form name="upload" method="post" enctype="multipart/form-data" action="http://strona.pl/upload">
  2. Imię/ksywa*: <br /><input type="text" name="imie" value="" style="width:300px"/><br /><br />
  3. <input type="hidden" name="impreza" value="<?php echo $_GET['numer']; ?>"></input>
  4. Opis*: <br /><textarea rows="5" cols="30"" name="opis" ></textarea><br>
  5. <input type="file" name="plik" />
  6. <input type="hidden" name="MAX_FILE_SIZE" value="2000" />
  7. <input type="submit" value="Dodaj zdjęcie" />
  8. </form>



  1. <?php
  2. if(!is_uploaded_file($_FILES[plik][tmp_name])){
  3. echo "<span style=\"color:red\">Wybierz zdjęcie! Możesz dodawać pliki wyłącznie z rozszerzeniem .jpg .png .gif</span>";
  4.  
  5. exit;}
  6. if($_FILES[plik][error] != 0){
  7. echo "<span style=\"color:red\">Wystąpił błąd podczas przesyłania pliku!
  8. Sprawdź czy plik nie jest za duży i spróbuj ponownie! Maxymalny rozmiar to 200kb</span>
  9. ";
  10. exit;}
  11.  
  12. if($_FILES[plik][type] == "image/jpg" ||
  13. $_FILES[plik][type] == "image/jpeg" ||
  14. $_FILES[plik][type] == "image/png" ||
  15. $_FILES[plik][type] == "image/gif"){
  16.  
  17. if(move_uploaded_file($_FILES[plik][tmp_name], "galeria/".$_FILES[plik][name])){
  18.  
  19.  
  20. if($_POST['imie'] != "" && $_POST['opis'] != "")
  21. {
  22.  
  23.  mysql_query("INSERT INTO iczluchow_galeria (galeriaId, galeriaDzial, galeriaImpreza, galeriaFoto, galeriaDodal, galeriaOpis, galeriaData) VALUES('', '".zapytanie($_POST['dzial'])."', '".zapytanie($_POST['impreza'])."', '".zapytanie($_FILES['plik']['name'])."', '".zapytanie($_POST['imie'])."', '".zapytanie($_POST['opis'])."', '".date("d-m-Y")."')");
  24.  
  25.  echo "<span style=\"color:green\">Zdjecie wrzucono pomyślnie!</span>";
  26.  
  27. }
  28. else
  29. {
  30.  echo "<span style=\"color:red\">Proszę wypełnić pola oznaczone <b>*</b></span>";
  31. }
  32.  
  33. }else{
  34. echo "<span style=\"color:red\">Wystąpił nieoczekiwany błąd podczas dodawania fotki!</span>
  35. ";
  36. }
  37. }else{
  38. echo "<span style=\"color:red\">Niedozwolony format pliku! Możesz dodawać pliki wyłącznie z rozszerzeniem .jpg .jpeg .png .gif</span>";
  39.  
  40. }
  41. ?>
kkuba
Kod
if($_FILES['plik']['size'] <= 200*1024)
{
    // tutaj upload
}
else
{
    echo 'Plik jest za duży! max. rozmiar: 200 KB! ';
}


Pozdrawiam.
hondek
musisz dac
  1. <input type="hidden" name="MAX_FILE_SIZE" value="204800" />


bo podajesz wartosc w bajtach smile.gif a 200kb = 204800b smile.gif
kkuba
Cytat(hondek @ 22.05.2009, 00:24:00 ) *
musisz dac
  1. <input type="hidden" name="MAX_FILE_SIZE" value="204800" />


bo podajesz wartosc w bajtach smile.gif a 200kb = 204800b smile.gif


Takie 'zabezpieczenie' można banalnie ominąć, polecam zastosowanie mojego kodu. 



Pozdrawiam. 
palixmp
Witam.
A ja ma do tego problem, jak zabezpieczyć przed próbą wysłania pustego formularza?? Zrobiłem coś takiego:


  1. <?php
  2. if($_FILES['userfile']['size'] <= 1000*1024)
  3. {
  4. UPLOAD
  5. } else {
  6.    if($_FILES['userfile']['size'] >= 1000*1024)
  7.        echo 'Plik zbyt duży, maxymalna wielkośc to 1 mega';
  8.        
  9.    if(!empty($_FILES['userfile']['size']))
  10.        echo 'Musisz wybrać zdjecie';
  11.  
  12. }
  13. ?>


I wszystko ładnie pięknie, ale to z zabezpieczeniem "pustego" formularza mi nie działa:( Jeśli zmienie na:
  1. <?php
  2. f($_FILES['userfile']['size'] = 0*1024)
  3.        echo 'Musisz wybrać zdjecie';
  4. ?>


To też niedziała:( W obu przypadkach wyświetlają mi się komunikaty typu:
Warning: copy() [function.copy]: Filename cannot be empty in /home/katalog_strony/xt_upload.php on line 27

Pliczek xt_upload.php wyglada tak:
  1. <?
  2. class xUpload {
  3.      var $_file;
  4.      var $_dir;
  5.      var $_name;
  6.      var $_tname;
  7.      var $_rights;
  8.      
  9.      function make_dir($_dir, $_rights) {
  10.      $_doit = mkdir($_dir, $_rights);
  11.      if($_doit) echo "Making folder: Ok<br>";
  12.      else echo "Error while making folder<br>";
  13.      return $_doit;
  14.      }
  15.      
  16.      function change_dir($_dir) {
  17.      $_doit = chdir($_dir);
  18.      /*if($_doit) //echo "Changing dir... OK<br>";
  19.       else echo //"Error while changing dir<br>";
  20.       */
  21.      return $_doit;
  22.      }
  23.      
  24.      function upload_file($_file, $_name) {
  25.      $_doit = copy($_file, $_name);
  26.      /*if($_doit) echo "Uploading file: Ok<br>";
  27.       else echo "Error while uploading file<br>";
  28.       */
  29.      return $_doit;
  30.      }
  31.      
  32.      function make_thumb($_name, $_tname, $_width, $_height, $_del_source) {
  33.      
  34.       $groesse = getimagesize("$_name");
  35.  
  36.  
  37.       $breite = $groesse[0];
  38.       $hoehe  = $groesse[1];
  39.  
  40.       $neue_breite = $_width;
  41.       $neue_hoehe  = $_height;
  42.  
  43.       $altes_bild = ImageCreateFromJPEG("$_name");
  44.       $neues_bild = ImageCreateTrueColor($neue_breite, $neue_hoehe);
  45.       ImageCopyResampled($neues_bild, $altes_bild, 0, 0, 0, 0, $neue_breite, $neue_hoehe,
  46.                        $breite, $hoehe);
  47.  
  48.                  
  49.       $create_new = ImageJPEG($neues_bild, "$_tname");
  50.  
  51.       if($_del_source) {
  52.        //Großes Bild löschen
  53.        $del_upload = unlink("$_name");
  54.        }
  55.        
  56.        return true;
  57.      
  58.      }
  59.      
  60.      function del_file($_name) {
  61.      $del_file = unlink("$_name");
  62.      if($del_file) echo "Deleting file $_name: OK<br>";
  63.      else echo "Error while deleting file $_name<br>";
  64.      
  65.      return $del_file;
  66.      }
  67.  
  68. }
  69. ?>


Formularz do tego mam taki:
  1. <?php
  2.            echo '<FORM ACTION="dodaj_zdjecie2.php" METHOD="POST" ENCTYPE="multipart/form-data">
  3.          <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
  4.          <input type="hidden" name="id_albumu" value="'.$id.'">
  5.          Opis:<input type="text" name="opis"><br/>
  6.           Wybierz plik: <input name="userfile" type="file" accept="image/jpg,jpeg">
  7.          <br /><input type="submit" value="Dodaj plik">
  8.          </form>';          
  9.            ?>

Umiał by ktoś pomóc?? Bo nie wiem, poco on się przy sprawdzaniu już odwołuje do tego pliku xt_upload.php?
Z góry dzięki za pomoc:)
seth-kk
  1. <?php
  2. if(empty($_FILES['userfile']['size']))
  3.       echo 'Musisz wybrać zdjecie';
  4. ?>
cos takiego powinno byc w glownej lini warunkow a nie w else
erix
Ale kombinujecie... :X

Sprawdzasz, czy
  1. <?php
  2. $_FILES['userfile']['error']
  3. ?>

ma wartość stałej UPLOAD_ERR_NO_FILE.

edit@down: łeeee, zepsułeś zabawę tym gotowcem... sad.gif
Pilsener
  1. <?php
  2. if(empty($_FILES['plik']['name'])){} //sprawdzamy czy formularz z plikiem został wysłany
  3. if($_FILES['plik']['error'] == UPLOAD_ERR_OK){} //sprawdzamy, czy plik został wysłany poprawnie
  4. ?>
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.