2013-07-05 6 views
1
<?php 

function sprawdz_bledy() 
{ 
    if ($_FILES['fotki']['error'] > 0) 
    { 
    echo 'problem: '; 
    switch ($_FILES['fotki']['error']) 
    { 
     // jest większy niż domyślny maksymalny rozmiar, 
     // podany w pliku konfiguracyjnym 
     case 1: {echo 'Rozmiar pliku jest zbyt duży.'; break;} 

     // jest większy niż wartość pola formularza 
     // MAX_FILE_SIZE 
     case 2: {echo 'Rozmiar pliku jest zbyt duży.'; break;} 

     // plik nie został wysłany w całości 
     case 3: {echo 'Plik wysłany tylko częściowo.'; break;} 

     // plik nie został wysłany 
     case 4: {echo 'Nie wysłano żadnego pliku.'; break;} 

     // pozostałe błędy 
     default: {echo 'Wystąpił błąd podczas wysyłania.'; 
     break;} 
    } 
    return false; 
    } 
    return true; 
} 


function sprawdz_typ() 
{ 
    if ($_FILES['fotki']['type']!= 'image/jpeg') 
    { 
     echo 'nie właściwy format pliku, proszę wybrać plik w formacie JPG'; 
     return false; 
    } 
    return true; 
} 

function zapisz_plik() 
{ 
    global $nazwa_pliku;  

     $filess = glob("./../wnetrza_img/wnetrze_*.jpg"); 
     if (is_array($filess) && count($filess) > 0) { 
    foreach ($filess as $filename) { 
     $files[] = $filename; 
    } 
} else { 
    $files[] = './../wnetrza_img/wnetrze_0.jpg'; 
} 

    if (!empty($files)) { 

    $ostatni = $files[count($files)-1]; 
    $pokaz_ostatni = explode("wnetrze_", $ostatni); 
    $ostatni_czysty = explode(".jpg", $pokaz_ostatni[1]); 
    $dodawanie = $ostatni_czysty[0] +1; 
    $nazwa_pliku = "wnetrze_$dodawanie.jpg"; 
    $lokalizacja = "./../wnetrza_img/$nazwa_pliku"; 
    } 
    else $lokalizacja = "./../wnetrza_img/wnetrze_0.jpg"; 


    if(is_uploaded_file($_FILES['fotki']['tmp_name'])) 
    { 
    if(!move_uploaded_file($_FILES['fotki']['tmp_name'], $lokalizacja)) 
    { 
     echo 'problem: Nie udało się skopiować pliku do katalogu.'; 
     return false; 
    } 
    } 
    else 
    { 
    echo 'problem: Możliwy atak podczas przesyłania pliku.'; 
    echo 'Plik nie został zapisany.'; 
    return false; 
    } 
    return true; 
} 

/*----------------START_WYSYLANIE_ZDJEC----------------*/ 

if (isset($_POST['wyslij'])) { 
    if (!empty($_FILES['fotki']['name'])) { 
     foreach($_FILES['fotki']['tmp_name'] as $key => $tmp_name) { 
      if (sprawdz_bledy('$fotki') && sprawdz_typ('$fotki')) { 
       zapisz_plik('$fotki'); 
      } 
     } 
    } 
} 

/*----------------KONIEC_WYSYLANIE_ZDJECI----------------*/ 

?> 

을 업로드 다중 파일,하지만 루프가 작동하지 않습니다, 나는 $FILES['fotki']['tmp_name']add [$key]을 시도했지만 도움이되지 않았다 너무.PHP이 내가 serwer에 몇 개의 파일을 업로드하기 위해 노력하고있어 하나의 내 코드입니다 그래픽 체크

어디에서 문제가 있는지 보여 줄 수 있습니까?

///////////////////////////// EDIT /////////////////////////////////////// ////

<?php 

function sprawdz_bledy($key) 
{ 
    if ($_FILES['fotki']['error'][$key] > 0) 
    { 
    echo 'problem: '; 
    switch ($_FILES['fotki']['error']) 
    { 
     // jest większy niż domyślny maksymalny rozmiar, 
     // podany w pliku konfiguracyjnym 
     case 1: {echo 'Rozmiar pliku jest zbyt duży.'; break;} 

     // jest większy niż wartość pola formularza 
     // MAX_FILE_SIZE 
     case 2: {echo 'Rozmiar pliku jest zbyt duży.'; break;} 

     // plik nie został wysłany w całości 
     case 3: {echo 'Plik wysłany tylko częściowo.'; break;} 

     // plik nie został wysłany 
     case 4: {echo 'Nie wysłano żadnego pliku.'; break;} 

     // pozostałe błędy 
     default: {echo 'Wystąpił błąd podczas wysyłania.'; 
     break;} 
    } 
    return false; 
    } 
    return true; 
} 


function sprawdz_typ($key) 
{ 
    if ($_FILES['fotki']['type'][$key]!= 'image/jpeg') 
    { 
     echo 'nie właściwy format pliku, proszę wybrać plik w formacie JPG'; 
     return false; 
    } 
    return true; 
} 

function zapisz_plik($key) 
{ 
    global $nazwa_pliku;  

     $filess = glob("./../wnetrza_img/wnetrze_*.jpg"); 
     if (is_array($filess) && count($filess) > 0) { 
    foreach ($filess as $filename) { 
     $files[] = $filename; 
    } 
} else { 
    $files[] = './../wnetrza_img/wnetrze_0.jpg'; 
} 

    if (!empty($files)) { 

    $ostatni = $files[count($files)-1]; 
    $pokaz_ostatni = explode("wnetrze_", $ostatni); 
    $ostatni_czysty = explode(".jpg", $pokaz_ostatni[1]); 
    $dodawanie = $ostatni_czysty[0] +1; 
    $nazwa_pliku = "wnetrze_$dodawanie.jpg"; 
    $lokalizacja = "./../wnetrza_img/$nazwa_pliku"; 
    } 
    else $lokalizacja = "./../wnetrza_img/wnetrze_0.jpg"; 


    if(is_uploaded_file($_FILES['fotki']['tmp_name'][$key])) 
    { 
    if(!move_uploaded_file($_FILES['fotki']['tmp_name'][$key], $lokalizacja)) 
    { 
     echo 'problem: Nie udało się skopiować pliku do katalogu.'; 
     return false; 
    } 
    } 
    else 
    { 
    echo 'problem: Możliwy atak podczas przesyłania pliku.'; 
    echo 'Plik nie został zapisany.'; 
    return false; 
    } 
    return true; 
} 

/*----------------START_WYSYLANIE_ZDJEC----------------*/ 

if (isset($_POST['wyslij'])) { 
    if (!empty($_FILES['fotki']['name'])) { 
     foreach($_FILES['fotki']['tmp_name'] as $key => $tmp_name) { 
      if (sprawdz_bledy($key) && sprawdz_typ($key)) { 
       zapisz_plik($key); 
      } 
     } 
    } 
} 

/*----------------KONIEC_WYSYLANIE_ZDJECI----------------*/ 

?> 

당신의 정보 나 도움이 지금은 모든 함수에 인수를 추가하고 지금은 작동하지만, 10 개 파일, 나는 이유를 모르겠어 : /이

답변

1

귀하의 코드가 완전히이다 깨진

if (sprawdz_bledy('$fotki') && sprawdz_typ('$fotki')) { 
        ^-- ^-- 

단일 인용 문자열 (') 할 하지 변수를 해석하므로 함수에 $, f, o 등의 문자가 전달됩니다. 코드 전체에서 여러 곳에서이 작업을 수행합니다.

다음 함수 자체 :

function sprawdz_bledy() 

는, 인수를 허용하지 않습니다 그래서 $fotki가 제대로 전달 된 경우에도, 당신은 값을 던져. 그 함수 내에서

, 당신은 $ _FILES 모든 매개 변수를 하드 코딩, 그래서 외부의 foreach는() 루프는 완전히 무의미 :

if ($_FILES['fotki']['error'] > 0) 

당신이 $ _FILES에 foreach 루프를하고있는 감안할 때 당신 아마 같은 것을 원 :

function sprawdz_bledy($name, $id) { 
    if ($_FILEs[$name]['error'][$id] > 0) { 
+0

오 내 실수 : 그래서 어쩌면 내가 뭔가를해야합니까? LOOP : 경우 (sprawdz_bledy() && sprawdz_typ()) { \t \t \t \t zapisz_plik(); 하지만 루프가 무엇입니까? 또는 업로드 할 모든 파일을 3 회 시작하는 데 더 좋은 방법이 있습니까? – SkuterPL

+0

확인 도움을 주셔서 감사합니다. – SkuterPL