2013-09-14 9 views
0

я следующая проблема, им пытаются проверить размер файла и формат некоторых фотографии, используя для каждого Вот кодпроверка размера IMG и формы перед загрузкой

.... 

$check = 0; 
$errors= array(); 
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name) 
    { 
    $file_name = $key.$_FILES['files']['name'][$key]; 
    $file_size =$_FILES['files']['size'][$key]; 
    $file_tmp =$_FILES['files']['tmp_name'][$key]; 
    $file_type=$_FILES['files']['type'][$key]; 


    $allowedExts = array("JPEG", "jpeg", "jpg", "JPG"); 
    $temp = explode(".", $_FILES["files"]["name"][$key]); 
    $extension = end($temp); 
    $file_ext=strtolower(end($temp)); 


    if ($file_size > 2097152) 
     { 

     $errors = 'Bigger than limit'; 
     $check = 1; 
     } 
    else if (in_array($file_ext,$allowedExts) === false) 
     { 
     $errors = 'Wrong format'; 
     $check = 2; 
     } 
    } 
} 

if ($check = 1) 
    { 
    print '<script type="text/javascript">'; 
    print 'alert("Κάποιο από τα αρχεία σας ξεπερνάει το όριο των 3mb. Παρακαλώ ελέγξτε τα αρχεία σας!!!")'; 
    print '</script>'; 

    } 
else if ($check = 2) 
    { 
    print '<script type="text/javascript">'; 
    print 'alert("Παρακαλώ εισάγετε μόνο αρχεία σε .jpeg και .jpg format!!!")'; 
    print '</script>'; 

    } 

else if ($check = 0) 
    { 

    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name) 
     { 
     $file_name = $key.$_FILES['files']['name'][$key]; 
     $file_size =$_FILES['files']['size'][$key]; 
     $file_tmp =$_FILES['files']['tmp_name'][$key]; 
     $file_type=$_FILES['files']['type'][$key]; 


     $allowedExts = array("JPEG", "jpeg", "jpg", "JPG"); 
     $temp = explode(".", $_FILES["files"]["name"][$key]); 
     $extension = end($temp); 
     $file_ext=strtolower(end($temp)); 
     if (($file_size <= 2097152) && (in_array($file_ext,$allowedExts) === true)) 
      { 

      $desired_dir=$Kwdikos_Sunergath.'_'.$Hmeromhnia_Musthriou.'_'.$date_added; 
      if(empty($errors)==true) 
       { 
       if(is_dir($desired_dir)==false){ 
        mkdir("$desired_dir", 0700);  // Create directory if it does not exist 
       } 
       if(is_dir("$desired_dir/".$file_name)==false) 
        { 
        move_uploaded_file($file_tmp,"$desired_dir/".$file_name); 
        } 
       else 
        {         //rename the file if another one exist 
        $new_dir="$desired_dir/".$file_name.time(); 
        rename($file_tmp,$new_dir) ;     
        } 
       mysql_query("INSERT INTO mpla mpla mpla)"); 
       } 
      } 
     } 

так, когда им пытаются uplod файл размером менее 2 мб делает $ check = 1, и я не знаю, почему .... если я пропущу контрольный код, он работает ...

+0

Используйте «==» в ваших операторах if. – rrrfusco

+0

@ rrrfusco thnx много! –

ответ

0

Использовать == вместо = при проверке.

Попробуйте как

if ($check == 1) 
      ^
0

Кроме того, что Shankar Damodaran сказал, я бы сказал, проверить изображения, как это:

$imagesize = getimagesize($_FILES['files']['tmp_name'][$key]); 
if (2 != $imagesize[2]) { 
    // if not JPG handle error 
} 

Посмотрите на руководство: getimagesize.


Если вам нужно извлечь расширение файла, вы можете использовать это, вместо того, чтобы расколоть строку:

$extension = pathinfo($filename, PATHINFO_EXTENSION); 

Посмотрите на руководство: pathinfo.

0
if ($file_size > 2097152 && $file_size <= 1mb) 
{ 
    $errors = 'Bigger than limit'; 
    $check = 1; 
} 
/*WRONG*/ 
if ($check = 1) 
{ 
    ...... 
} 
/*CORRECT*/ 
if ($check == 1) 
{ 
    ..... 
} 

Я добавил и оператор в вашей, если заявление попробовать и использовать ==, если заявление. Надеюсь, он сработает.

Смежные вопросы