Показать сообщение отдельно
  #8 (permalink)  
Старый 25.09.2015, 17:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Я же просто пишу пример, для единичного файла, а вы загружаете массив файлов, поэтому надо:

$filename = basename($_FILES['fileFF']['name'][$i]);

В сети ищите темы типа "как правильно загружать файлы" и подобное, там прочтете для чего это делается. Эта функция не усложняет, а помогает, просто не знаете вы языка, если копируете, а не понимаете.

Ошибка "syntax error, unexpected $end" гласит о том, что не закрыта конструкция, то есть, нет или лишняя фигурная скобка. Вы просто вырвали кусок кода из примера и вставили его себе, и конечно у вас нет закрывающих скобок, поэтому и ошибка. Должно быть так:

if(!$e = array_diff($_FILES['fileFF']['error'], array(0))) {
    if(($size = array_sum(array_column($_FILES['fileFF'], 'size'))) < $sizemail) {  
        //формирование почтового отправления, то есть
        //$to = "@gmail.com"; // поменять на свой электронный адрес
        //$from = $_POST['contactFF'];
        //и так далее
        for($i=0;$i<count($_FILES['fileFF']['name']);$i++) {
            if(is_uploaded_file($_FILES['fileFF']['tmp_name'][$i])) {
                //добавление файлов к почте, то есть заполнение $attachment и т.д.
            } else {
                //подстава - файл левый, прекращаем работу скрипта
                exit('Да и идите вы ...');
            }
        }
    } else {
        //формируем информацию о превышении размера файлов разрешенных для загруки 
        //то есть если их размер превышает размер $sizemail разрешенный для отправкой почтой
        //$size - содержит размер всех загруженных файлов 
    }
} else {
    //формируем информацию об ошибках загрузки файлов для пользователя
    //ключи массива $e будут указывать на файлы загруженные с ошибками
}


А пользовательская функция arrayColumn() нужна только в том случае, если у вас версия РНР ниже 5.5.0 (ориентироваться надо не на локальный сервер, а реальный, тот что будет, устанавливая на локальном такую же версию, в Open Server это сделать легко), то есть так:

arrayColumn($_FILES['fileFF'], 'size')

вместо

array_column($_FILES['fileFF'], 'size')

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

Иначе эта функция не нужна, и нужно использовать стандартную array_column().

Последний раз редактировалось laimas, 25.09.2015 в 21:47.
Ответить с цитированием