$allowed_filetypes=array('.txt','.jpg','.gif','.bmp','.png',);// Здесь мы перечисляем допустимые типы файлов
$max_filesize=524288;// Максимальный размер загружаемого файла в байтах (в данном случае он равен 0.5 Мб).
$upload_path='/public_html/upload/';// Место, куда будут загружаться файлы (в данном случае это папка 'upload').
$name_file=$_FILES['filename']['name'];// В переменную $name_file заносим точное имя файла (включая расширение).
$ext=substr($name_file,strpos($name_file,'.'),strlen($name_file)-1);// В переменную $ext заносим расширение загруженного файла.
if(!in_array($ext,$allowed_filetypes))// Сверяем полученное расширение со списком допутимых расширений, которые мы определили в самом начале. Если расширение загруженного файла не входит в список разрешенных, то прерываем выполнение программы и выдаем соответствующее сообщение.
if(filesize($_FILES['filename']['tmp_name'])>$max_filesize)// Теперь проверим размер загруженного файла и если он больше максимально допустимого, то прерываем выполнение программы и выдаем сообщение.
$allowed_filetypes=array('.txt','.jpg','.gif','.bmp','.png',);// Здесь мы перечисляем допустимые типы файлов
$max_filesize=524288;// Максимальный размер загружаемого файла в байтах (в данном случае он равен 0.5 Мб).
$upload_path='/public_html/upload/';// Место, куда будут загружаться файлы (в данном случае это папка 'upload').
$name_file=$_FILES['filename']['name'];// В переменную $name_file заносим точное имя файла (включая расширение).
$ext=substr($name_file,strpos($name_file,'.'),strlen($name_file)-1);// В переменную $ext заносим расширение загруженного файла.
if(!in_array($ext,$allowed_filetypes))// Сверяем полученное расширение со списком допутимых расширений, которые мы определили в самом начале. Если расширение загруженного файла не входит в список разрешенных, то прерываем выполнение программы и выдаем соответствующее сообщение.
if(filesize($_FILES['filename']['tmp_name'])>$max_filesize)// Теперь проверим размер загруженного файла и если он больше максимально допустимого, то прерываем выполнение программы и выдаем сообщение.
1. Не записывайте так строки. Сделайте так: $upload_path . '/' . $z
2. Что конкретно не работает? Выдает какую-то ошибку. Или срабатывает ваш die()?
3. Почему переменная $z определяется после ее использования?
1. Не записывайте так строки. Сделайте так: $upload_path . '/' . $z
2. Что конкретно не работает? Выдает какую-то ошибку. Или срабатывает ваш die()?
3. Почему переменная $z определяется после ее использования?
Постоянно срабатывает die();
garvey
Отправлено: 05 Марта, 2011 - 15:01:57
Частый посетитель
Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010 Откуда: Minsk
Вот ваш код. Вы сразу проверяете на наличие какого-то файла, название которого определяете после этой самой проверки. Т.е. на момент проверки $z нет. И в функцию file_exists попадает лишь директория. Т.к. директория у вас уже есть, file_exists возвращает true.
Вот ваш код. Вы сразу проверяете на наличие какого-то файла, название которого определяете после этой самой проверки. Т.е. на момент проверки $z нет. И в функцию file_exists попадает лишь директория. Т.к. директория у вас уже есть, file_exists возвращает true.
$allowed_filetypes=array('.txt','.jpg','.gif','.bmp','.png',);// Здесь мы перечисляем допустимые типы файлов
$max_filesize=524288;// Максимальный размер загружаемого файла в байтах (в данном случае он равен 0.5 Мб).
$upload_path='/public_html/upload/';// Место, куда будут загружаться файлы (в данном случае это папка 'upload').
$name_file=$_FILES['filename']['name'];// В переменную $name_file заносим точное имя файла (включая расширение).
$ext=substr($name_file,strpos($name_file,'.'),strlen($name_file)-1);// В переменную $ext заносим расширение загруженного файла.
if(!in_array($ext,$allowed_filetypes))// Сверяем полученное расширение со списком допутимых расширений, которые мы определили в самом начале. Если расширение загруженного файла не входит в список разрешенных, то прерываем выполнение программы и выдаем соответствующее сообщение.
if(filesize($_FILES['filename']['tmp_name'])>$max_filesize)// Теперь проверим размер загруженного файла и если он больше максимально допустимого, то прерываем выполнение программы и выдаем сообщение.
time - позволит всегда узнать когда был загружен файл
base_encode - начальное имя файла всегда можно будет вытащить
rand - поставит последнюю точку в создании уникального имени файла
100% что такое имя больше никогда не попадется на твоем сервере, т.к. чтоб это произошло, rand должен отдать в одну и ту же секунду в разных случая разные имена, да еще и файл один и тот же должен загрузится к этой секунде - в общем не реально. А мороки в 100500 раз меньше!
JustUserR
Отправлено: 06 Марта, 2011 - 12:12:13
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
ALEN пишет:
А есть смысл в таком принципиально сложном способе создания имени файла?
Осуществление использование формата идентификаторов файлов с включением поддержки оригинальным региональных элементов, в действительности обеспечениет усложнение переносимости PHP-приложения относительно используемой конфигурации ОС и web-сервера, а также требует проведение сопоставление оригинальной кодовой таблицы и уровня элементного трактования для передаваемых информационных полей в HTTP-заголовках, и локальной форме хранения объекта в слое данных и параметрах обработки строковых элементов
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
ALEN
Отправлено: 06 Марта, 2011 - 12:48:49
Участник
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
JustUserR
Такое ощущение, что мой пост не прочел
Мелкий
Отправлено: 06 Марта, 2011 - 12:56:11
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
ALEN пишет:
100% что такое имя больше никогда не попадется на твоем сервере, т.к. чтоб это произошло, rand должен отдать в одну и ту же секунду в разных случая разные имена, да еще и файл один и тот же должен загрузится к этой секунде - в общем не реально.
И вариант для наркоманов - перед записью файлов ещё и проверить, правда ли такого имени файла нету через file_exists.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
ALEN пишет:
JustUserR Такое ощущение, что мой пост не прочел
Указанная в рассматриваемом сообщении сентенция в действительности является подтверждением вашего комментария, и осуществляет описание дополнительных факторов, в силу существования которых предполагаемое решения является оптимальным
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.