2013-08-25 2 views
0

Я смотрел похожие записи здесь, но не смог взломать решение. Я получаю Strict Стандарты: Только переменные должны быть переданы по ссылке ошибка здесь, на линии strtolower($file['name']))),. Пробные часы теперь искали решение, но не могли понять, как исправить. Можете ли вы указать, где я ошибся?Строгая стандартная ошибка в PHP

Примечание: Код Edited согласно предложению @ Kolink в поле ниже:

<?php 
require_once 'upload_config.php'; 

$mydirectory = myUploadDir(); 

$uploaded_file_counter = 0; 
$UploadLimit = $_POST['counter']; 

for ($i = 0; $i <= $UploadLimit; $i++) { 
    $file_tag = 'filename' . $i; 
    $filename = $_FILES[$file_tag]['name']; 

    if ($filename != null) { 
     $rand = time(); 
     $str = "$rand$filename"; 

     // set folder name in here. 
     $filedir = myUploadDir(); 

     //change the string format. 
     $string = $filedir . $str; 

     $patterns[0] = "/ /"; 
     $patterns[1] = "/ /"; 
     $patterns[1] = "/ /"; 

     $replacements[1] = "_"; 

     $dirname = strtolower(preg_replace($patterns, $replacements, $string)); 
     //end of changing string format 

     //checking the permitted file types 
     if ($check_file_extentions) { 
      $allowedExtensions = allowedfiles(); 

      foreach ($_FILES as $file) { 
       if ($file['tmp_name'] > '') { 
        /*if (!in_array(end(explode(".", strtolower($file['name']))), $allowedExtensions)) */ 
        if (!in_array(array_reverse(explode(".", strtolower($file['name'])))[0], $allowedExtensions)) { 
         $fileUploadPermission = 0; 
        } else { 
         $fileUploadPermission = 1; 
        } 
       } 
      } 
     } else { 
      $fileUploadPermission = 1; 
     } 

     //end of checking the permitted file types 
     if ($fileUploadPermission) { 
      if (move_uploaded_file($_FILES[$file_tag]['tmp_name'], $dirname)) { 
       echo "<p>"; ?> 
       <div><?php echo "<img style='height:100px;width:200px' src='$dirname'>"; ?></div> <?php 
       echo "</p>"; 

       $uploaded_file_counter += 1; 
      } 
     } 
    } 
} 

if ($uploaded_file_counter == 0) { 
    echo "<br /> <b style='font-weight:bold;color:red'>Opss! Please select an image file<b>"; 
} else { 
    echo "<br /> <b>You request " . $i . " image files to upload and " . $uploaded_file_counter . " files uploaded sucessfully</b>"; 
} 
?> 
+0

Проблема не в показанном вами коде. Покажите нам полную трассировку стека. – Brad

+0

Возможный дубликат [Строгие стандарты: только переменные должны передаваться по ссылке] (http://stackoverflow.com/questions/2354609/strict-standards-only-variables-should-be-passed-by-reference) –

ответ

2

end принимает аргумент по ссылке, так как он изменяет исходный массив, перемещая его внутренний указатель.

Так как вы по всей видимости, с помощью PHP 5.4, вы можете сделать это вместо того, чтобы получить последний:

if(!in_array(array_reverse(explode(".",strtolower($file['name'])))[0],$allowedExtensions)) 

Тем не менее, это, вероятно, лучше сделать это в несколько этапов для читаемости:

$parts = explode(".",strtolower($file['name'])); 
$extension = $parts[count($parts)-1]; 
if(!in_array($extension,$allowedExtensions)) { 
+0

Еще одна вопрос, если я использовал End, а затем im не удалось распечатать/эхо загрузить все файлы (изображения). Я могу включить несколько загрузок здесь. Я редактировал свой оригинальный код выше –

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