Загрузка файла на сервер и обработка на PHP (Часть-2) | Базовый курс PHP-7

Поделиться
HTML-код
  • Опубликовано: 2 окт 2024

Комментарии • 50

  • @hephenstawking2176
    @hephenstawking2176 3 года назад +23

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

    • @сергейсергей-г9х6е
      @сергейсергей-г9х6е 3 года назад

      напишите как проверку сделать

    • @JohnDoe-uj2br
      @JohnDoe-uj2br 3 года назад +5

      @@сергейсергей-г9х6е
      if ($_FILES['filename']['size'] > 2 * 1024 * 1024) {
      exit('Размер файла превышает 2Мб');
      }elseif (move_uploaded_file($_FILES['filename']['tmp_name'], 'temp/' .$_FILES['filename']['name'])) {
      echo 'Файл загружен на сервер';
      echo 'Характеристики файла:';
      echo 'Имя файла:';
      echo $_FILES['filename']['name'] . '';
      echo 'Размер файла:';
      echo $_FILES['filename']['size'] . '';
      echo 'Тип файла:';
      echo $_FILES['filename']['type'];
      }else{
      echo 'Файл не загружен на сервер';
      }

    • @сергейсергей-г9х6е
      @сергейсергей-г9х6е 3 года назад

      @@JohnDoe-uj2br спасибо

    • @gametrack_youtube
      @gametrack_youtube 2 года назад +1

      А не проще поставить max_file_size в самой форме?

    • @developerno1820
      @developerno1820 2 года назад +2

      Да, автор лоханулся конкретно, в его случае файл будет загружаться, просто не будет написано что он загружен
      Вот правильный варик
      if($_FILES['filename']["size"] > 2*1024*1024){
      exit("Файл превышает размер 2 мб");
      }else {
      if(move_uploaded_file($_FILES['filename']["tmp_name"] , "tmp/" . $_FILES['filename']["name"])){
      echo 'файл загружен';
      }else {
      echo 'файл НЕ загружен';
      }
      }

  • @ТатьянаКупцова-л5л
    @ТатьянаКупцова-л5л 2 года назад +2

    Спасибо большое за ролики!

  • @space_m8245
    @space_m8245 4 года назад +6

    супер. продолжайте эту тему.php рулит)

  • @MikhailMMA
    @MikhailMMA 3 месяца назад

    Андрей, Работаю с openserver , проблема такая , при интерпретации php кода возникает проблема, при которой любой используемый браузер, не интерпретирует код, а лишь выводит на экран сам код.
    Пытался менять домены, файлы, перезагружать openserver.
    Итог: все равно выдает просто код (текстом)

  • @kostyakozlov5289
    @kostyakozlov5289 4 года назад +3

    Не понимаю, я разделил по переносу строк, а как разбить строку на время, имя и текст?

  • @developerno1820
    @developerno1820 2 года назад +12

    Для тех кто не справился с дз:
    if(move_uploaded_file($_FILES['filename']["tmp_name"] , "tmp/" . $_FILES['filename']["name"])){
    $log = file_get_contents("tmp/" . $_FILES['filename']["name"]);
    $arr = explode("
    ", $log);
    unset($arr[count($arr)-1]);
    foreach($arr as $key => $value){
    $arr2 = explode("]", $value);
    foreach($arr2 as $key1 => $value1){
    $var1 = $arr2[0] . "";
    }
    foreach($arr2 as $key1 => $value1){
    $var2 = $arr2[1] . "";
    }
    foreach($arr2 as $key1 => $value1){
    $var3 = $arr2[2] . "";
    }
    echo "a. " . "Time " . substr($var1, 1);
    echo "b. " . substr($var2, 2);
    echo "c. " . "Write " . $var3;
    }
    }

    • @svoloche_
      @svoloche_ 2 года назад

      if(move_uploaded_file($_FILES['filename']['tmp_name'], 'item/' . $_FILES['filename']['name'])){
      $file = file('item/' . $_FILES['filename']['name']);
      foreach($file as $key => $value){
      $value = explode("] ", $value);
      $value = str_replace("[", "", $value);
      foreach($value as $key2 => $value2){
      if($key2 == 0){
      echo 'Time ' . $value2 . "";
      }else if($key2 == 1){
      echo 'Name ' . $value2 . "";
      }else if($key2 == 2){
      echo 'Write ' . $value2 . "";
      }
      }
      echo "";
      }
      }else{
      echo 'Файл НЕ скопирован на сервер';
      }

    • @chronofagt
      @chronofagt 2 года назад +5

      Спасибо тебе большое за твои комментарии, стараюсь решать всё сам, но иногда как например в этом уроке, хоть убей понять не мог что да как делать, и твоё решение очень помогло. Всего тебе хорошего, спасибо ещё раз за такую помощь)

    • @chumbuzzy4694
      @chumbuzzy4694 11 месяцев назад

      А зачем еще другие циклы?
      if ($_FILES['fileName']['size'] < 1024 * 2048) {
      if (move_uploaded_file($_FILES['fileName']['tmp_name'],'css/' . $_FILES['fileName']['name'])) {
      $log = explode("
      ", file_get_contents('css/month.txt'));
      foreach ($log as $value) {
      $arr2 = explode(']', $value);
      $var1 = $arr2[0];
      $var2 = $arr2[1];
      $var3 = $arr2[2];
      echo "";
      echo "a. Time " . substr($var1, 1) . '';
      echo "b. " . substr($var2, 2) . '';
      echo "c. write " . $var3 . '';
      echo "";
      }

      }
      } else {
      echo 'too much size';
      }

  • @asleshka
    @asleshka Год назад +2

    можем ли мы сделать кнопку отправки неактивной, если размер файла превышает лимит?

    • @andrievskii
      @andrievskii  Год назад

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

  • @solong4347
    @solong4347 4 года назад +1

    Можно ответ увидеть или подсказку по последнему пункту домашнего задания?

  • @YoutuberIT
    @YoutuberIT 2 года назад

    Нормально))

  • @glbash_
    @glbash_ 3 года назад +1

    Как занести имя файла в таблицу бд для вывода

  • @artcip5715
    @artcip5715 Год назад

    Где сама картинка

  • @phitrow
    @phitrow 2 года назад

    на реальном сервере не работает
    пошел другим путём, читаю /tmp => scandir(), видит загруженный файл в массиве [3]
    подставляю путь.название в move_uploads_file() ... и нихрена!!

  • @xeither289
    @xeither289 2 года назад +1

    ИИСУС ХРИСТОС ЕСТЬ МЕССИЯ И ОН ВОСКРЕС!!!☦❤

  • @sreggh
    @sreggh 3 года назад +1

    хорошо. прошел и этот урок)

  • @klodska
    @klodska 2 года назад

    Почему sumbit у меня не кнопка, а поле ввода?

  • @Evgenii1996
    @Evgenii1996 4 года назад +1

    Андрей, привет. Планируешь курс по Yii2 или другой фреймворк?

    • @andrievskii
      @andrievskii  4 года назад +9

      Yii не изучал, а вот Laravel можно будет

    • @razmikxachaturiani6729
      @razmikxachaturiani6729 4 года назад +4

      @@andrievskii привет и когда планируешь уроки laravel сделать?

    • @nurdanokenov4439
      @nurdanokenov4439 4 года назад +4

      @@andrievskii Ждем laravel!

  • @КлиментийБлошков
    @КлиментийБлошков 4 года назад

    Андрей привет подскажи в чем может быть проблема, написал всё в точности как у тебя, но обработчик будто не получает файл, и $_FILES соответственно пустой

    • @PlayOnMax
      @PlayOnMax 3 года назад

      первый файл form должен быть в расширении html

  • @МишаДрон-б5и
    @МишаДрон-б5и 4 года назад

    Добрый день! нету файла из ДЗ. В какой папке temp, где этот файл?
    Спасибо

    • @andrievskii
      @andrievskii  4 года назад

      По ссылке под роликом есть домашнее задание - проверил

  • @august2000
    @august2000 3 года назад

    Форма:
    Lesson36

    input{
    position:absolute;
    left:10%;
    border-color: blue;
    border-radius: 5px;
    border-width: 1px;
    }
    /* input[type='file'] {
    color: transparent;
    }
    */




    Выберите файл




    Подтвердите

  • @OPAPIZDEC
    @OPAPIZDEC 4 года назад

    А как сделать проверку по формату jpg png gif нужен масив?

    • @ruden6623
      @ruden6623 2 года назад

      Разбить строку по точке, и последний элемент списка это его расширение, а потом проверяешь есть ли это расширение в списке разрешенных расширений (нужно список создать где будут нужные расширения)

  • @sunnatillaortiqov6302
    @sunnatillaortiqov6302 3 года назад

    у меня не получается сделать дз как это делать можете помочь

  • @Oly20116
    @Oly20116 2 года назад

    Всем привет!
    Кидаю свое решение, не смогла я додуматься, как сразу загруженный док открывать. Если будут комментарии буду благодарна.
    if(move_uploaded_file($_FILES['filename']['tmp_name'], 'temp/'.$_FILES['filename']['name'])){
    if ($_FILES['filename']['size'] > 1*1024*1024) {
    echo 'Размер файла превышает 2 мегабайта';
    exit();
    echo 'test';

    }else{
    echo 'Файл скопирован на сервер';
    echo 'Характеристики нашего файла:';
    echo 'Имя файла: ';
    echo $_FILES['filename']['name'] . '';
    echo 'Размер файла: ';
    echo $_FILES['filename']['size'] . '';
    echo 'Тип файла: ';
    echo $_FILES['filename']['type'] . '';

    }
    $data = file('temp/chatlog_2019-12-04.txt');
    echo '';
    print_r (var_dump($data));
    echo '';
    }

  • @xeither289
    @xeither289 2 года назад +1

    БОГ ЕСТЬ ЛЮБИТЕ БОГА И СВОИХ БЛИЖНИХ!!!☦❤

  • @sergeysemkin6570
    @sergeysemkin6570 3 года назад

    Ужас, хуже только дударь

  • @mavvdies
    @mavvdies Год назад +1

  • @ОлегКулаков-ж9с
    @ОлегКулаков-ж9с 5 месяцев назад +1

    У меня получилось так:

  • @neven4ik
    @neven4ik Год назад

    Если кто то в 2023 смотрит, вот по моему мнению самый правильный код для дз:
    if (move_uploaded_file($_FILES["userfile"]["tmp_name"], "temp/{$_FILES["userfile"]["name"]}")) {
    $log = explode("
    ", file_get_contents("temp/{$_FILES["userfile"]["name"]}"));
    foreach ($log as $value) {
    $log2[] = explode("]", $value);
    }
    for ($i=0; $i < count($log2); $i++) {
    $time[] = substr($log2[$i][0], 1);
    $name[] = substr($log2[$i][1], 2);
    $write[] = $log2[$i][2];
    }
    for ($i=0; $i < count($time); $i++) {
    echo "Time $time[$i]$name[$i]Write $write[$i]";
    }
    }else{
    echo "Файл не был загружен";
    }

    • @ДмитрийУсов-м4я
      @ДмитрийУсов-м4я 8 месяцев назад

      Твой код единственный заработал. Ты случайно не через Опенсервер сервак поднял?

    • @neven4ik
      @neven4ik 8 месяцев назад

      @@ДмитрийУсов-м4я не

  • @contactplus100
    @contactplus100 2 года назад

    👍