Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Загрузка файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
PATCH
Отправлено: 02 Июля, 2011 - 03:07:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




Сижу сча как лунатик и не пойму где ошибка даже по образцу делаю.

CODE (html):
скопировать код в буфер обмена
  1.  <form enctype="multipart/form-data" action="add.php" method="post">
  2.  <input type="file" name="filename"><br>
  3. <p><input name="add" type="submit" value="Добавить "></p>
  4.  </form>



PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['filename']))
  2. {
  3. $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/files/';
  4.  
  5.    if($_FILES["filename"]["size"] > 1024*3*1024)
  6.    {
  7.      echo ("Размер файла превышает три мегабайта");
  8.      exit;
  9.    }
  10.    // Проверяем загружен ли файл
  11.    if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
  12.    {
  13.      // Если файл загружен успешно, перемещаем его
  14.      // из временной директории в конечную
  15.      move_uploaded_file($_FILES["filename"]["tmp_name"],"".$uploaddir."".$_FILES["filename"]["name"]);
  16.    } else {
  17.       echo("Ошибка загрузки файла");
  18.    };
  19.  
  20. // Выводим информацию о загруженном файле:
  21. echo "<h3>Информация о загруженном на сервер файле: </h3>";
  22. echo "<p><b>Оригинальное имя загруженного файла: ".$_FILES['filename']['name']."</b></p>";
  23. echo "<p><b>Mime-тип загруженного файла: ".$_FILES['filename']['type']."</b></p>";
  24. echo "<p><b>Размер загруженного файла в байтах: ".$_FILES['filename']['size']."</b></p>";
  25. echo "<p><b>Временное имя файла: ".$_FILES['filename']['tmp_name']."</b></p>";
  26. }




CODE (htmlphp):
скопировать код в буфер обмена
  1. ; Whether to allow HTTP file uploads.
  2. ; http://php.net/file-uploads
  3. file_uploads = On
  4.  
  5. ; Temporary directory for HTTP uploaded files (will use system default if not
  6. ; specified).
  7. ; http://php.net/upload-tmp-dir
  8. upload_tmp_dir = "G:/web/APACH+MYSQL+PHP/PHP2/tmp_upload"
  9.  
  10. ; Maximum allowed size for uploaded files.
  11. ; http://php.net/upload-max-filesize
  12. upload_max_filesize = 1000M
  13.  
  14. ; Maximum number of files that can be uploaded via a single request
  15. max_file_uploads = 20

(Отредактировано автором: 02 Июля, 2011 - 03:15:26)

 
 Top
tsoi85
Отправлено: 02 Июля, 2011 - 03:24:45
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


Помог: 10 раз(а)




$_POST['filename'] замените на $_POST['add'].

# В первой строке

(Отредактировано автором: 02 Июля, 2011 - 03:25:35)

 
 Top
PATCH
Отправлено: 02 Июля, 2011 - 03:27:04
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




тут идет проверка существует ли вообше переменая с файлом, а не нажата ли кнопка) нажать кнопку любой может)

Оо работает тока еще ошибок по выскакивало) но я там сам начудил) а как собствено проверить передается ли переменая с файлом?

(Отредактировано автором: 02 Июля, 2011 - 03:30:17)

 
 Top
tsoi85
Отправлено: 02 Июля, 2011 - 03:32:24
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


Помог: 10 раз(а)




Как нибудь так:

PHP:
скопировать код в буфер обмена
  1.  
  2. if (!$_FILES['file']['error']) {
  3.   # Нет ошибок
  4.  
  5. }
  6. else {
  7.   echo 'Файл не выбран ...';
  8. }
  9.  
  10.  
 
 Top
PATCH
Отправлено: 02 Июля, 2011 - 12:40:15
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




вопрос а в чем тут собственно ошибка Оо

CODE (htmlphp):
скопировать код в буфер обмена
  1.                         if($_FILES['filename']['type'] != "image/gif" and
  2.                         $_FILES['filename']['type'] !="image/jpeg" and
  3.                         $_FILES['filename']['type'] !="image/jpg" and
  4.                         $_FILES['filename']['type'] !="image/png")
  5.                         {exit ("Доступна загрузка только gif, png, jpeg, jpg файлов");}

по сути тут проверка если файл не имеет типа gif или png или jpeg или jpg то выход с ошибкой но я загружаю картинку с типом jpg и png пробовал нефига) имено на этом моменте ступар

(Отредактировано автором: 02 Июля, 2011 - 12:40:41)

 
 Top
OrmaJever Модератор
Отправлено: 02 Июля, 2011 - 12:50:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




перед условием

(Отредактировано автором: 02 Июля, 2011 - 12:57:20)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Мелкий Супермодератор
Отправлено: 02 Июля, 2011 - 12:58:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




PATCH пишет:
вопрос а в чем тут собственно ошибка

Пару дней назад поймал багрепорт к своему одному древнему скрипту - какой-то браузер не высылает корректный type. Что и кто высылает - разбираться не стал, всё равно с т.з. безопасности эта проверка ни о чём.
Воспользуйтесь mime_content_type


-----
PostgreSQL DBA
 
 Top
PATCH
Отправлено: 02 Июля, 2011 - 13:46:06
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




OrmaJever пишет:
перед условием
PHP:
скопировать код в буфер обмена
var_dump($_FILES['filename']['type']);
спасибо) я понел что эт)) эт я с браузером нахимичел эксперементировал с безопаснастью))) А чё я? Я ничё!


Мелкий пишет:
Пару дней назад поймал багрепорт к своему одному древнему скрипту - какой-то браузер не высылает корректный type. Что и кто высылает - разбираться не стал, всё равно с т.з. безопасности эта проверка ни о чём.
Воспользуйтесь mime_content_type

вот ток что ради интереса залил php сценарий в расширении jpg и попробовал испольнить его на прямую, результат тупой показ надписи изображение) менял даж mime-type в браузере один фиг, вот какая может быть тут бреш в системе безопасности? если mime-type на сервере (по нему интепретатор php определяет как исполнять файл как сценарий или картинку) а на сервере ж стоит на jpg тип image т.е интепретатор php его не будет исполнять как сценарий. я понимаю тут не хакерски форум я новичек в системе безопасности .но вроде я прально понел то что ты хотел сказать? как вот вообще можно будет тогда исполнить php код? если он определяется по mime-type на сервере.


еще хотел бы уточнить mime_content_type

определяет тип файла по mime type сервера или клиента? или она вообще как то иначе работает?

(Отредактировано автором: 02 Июля, 2011 - 13:54:08)

 
 Top
Мелкий Супермодератор
Отправлено: 02 Июля, 2011 - 14:33:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




PATCH пишет:
вот какая может быть тут бреш в системе безопасности?

Зависит от других проверок. Если проверять только mime, который присылает браузер - ничто не мешает выслать тот же скрипт с расширением php.

PATCH пишет:
определяет тип файла по mime type сервера или клиента? или она вообще как то иначе работает?

Сервера.


-----
PostgreSQL DBA
 
 Top
PATCH
Отправлено: 03 Июля, 2011 - 19:37:04
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




PHP:
скопировать код в буфер обмена
  1. $mime = mime_content_type($_FILES['filename']);
  2.                         if($mime != "image/gif" and $mime !="image/jpeg" and $mime !="image/jpg" and $mime !="image/png" and $mime != "image/x-icon");
  3.                         {exit ("Доступна загрузка только gif, png, jpeg, jpg, ico файлов");}


типо так реализовать? и вопрос почему кидает ошибку в $mime = mime_content_type($_FILES['filename']);

CODE (htmlphp):
скопировать код в буфер обмена
  1. Warning: mime_content_type(): Can only process string or stream arguments in

(Отредактировано автором: 03 Июля, 2011 - 19:38:52)

 
 Top
tsoi85
Отправлено: 03 Июля, 2011 - 20:20:50
Post Id


Новичок


Покинул форум
Сообщений всего: 63
Дата рег-ции: Июнь 2011  


Помог: 10 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $mime = mime_content_type($_FILES["filename"]["tmp_name"]);
  3. if ($mime != "image/gif" and $mime !="image/jpeg" and $mime !="image/png" and $mime != "image/x-icon") {
  4.     exit ("Доступна загрузка только gif, png, jpeg, jpg, ico файлов");
  5. }
  6.  
 
 Top
PATCH
Отправлено: 03 Июля, 2011 - 20:31:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




спасибо работает
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB