Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обломки ввода файлов - как от них избавиться?
 
 автор: Владимир55   (05.01.2013 в 11:06)   письмо автору
 
 

Результаты закачивания файла на сервер обрабатываются вот таким образом:
<?php
     $tmp_name 
$_FILES['userfile']['tmp_name'];
    
move_uploaded_file($tmp_name"commerce/" $_FILES['userfile']['name']);
 
    
$price file_get_contents("commerce/" $_FILES['userfile']['name']); 

Все хорошо, если посетитель при вводе выбрал существующий файл и ввод произошел успешно. В противном случае в переменную $price попадают обломки от ранее введенных файлов. Причем не от одного, а от нескольких. И получается примерно так:

 mq&#65533; .p&#65533;&#65533;..&#1333;
 import-2.xml&#65533;&#65533;&#65533;&#1333;&#65533; import.xmlE&#1333; offers.xml&#65533;K&#1333;Дизайн.doc&#65533;&#65533;EJ& #1333;&#65533
>Инструкция.doc&#65533; 

Попытались после успешного ввода и занесения данных в переменную $price удалить его результаты, очистив историю для будущих вводов:
<?php
 unlink 
("commerce/" $_FILES['userfile']['name']);   

Но появляется сообщение, что операция запрещена.

Каким образом добиться того, что если посетитель выбрал для ввода несуществующий файл, переменная $price оказалась бы пустой или вообще бы не существовала?

  Ответить  
 
 автор: cheops   (05.01.2013 в 11:15)   письмо автору
 
   для: Владимир55   (05.01.2013 в 11:06)
 

Перед операцией с загруженными файлами, проверьте была ли в текущем обращении к обработчику загрузка файлов. Можно проверить как сам массив $_FILES, так и воспользоваться специализированной функцией is_uploaded_file().

  Ответить  
 
 автор: Владимир55   (05.01.2013 в 11:25)   письмо автору
 
   для: cheops   (05.01.2013 в 11:15)
 

Нажали на копку "Закачать" и оказались в обработчике.

Проверить $_FILES['userfile']['name'] или $_FILES['userfile']['error'] ? Или $_FILES['userfile']['size'] ?

На что проверять? На существование?

А может быть, надо проверить на существвание is_uploaded_file($_FILES['userfile']['name'])?

  Ответить  
 
 автор: cheops   (05.01.2013 в 11:26)   письмо автору
 
   для: Владимир55   (05.01.2013 в 11:25)
 

Достаточно проверить $_FILES['userfile']['name'], на существование и не равенство пустой строке.

  Ответить  
 
 автор: Владимир55   (05.01.2013 в 11:37)   письмо автору
 
   для: cheops   (05.01.2013 в 11:26)
 

Это отлично сработало!

Спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования