За последние 24 часа нас посетили 18096 программистов и 1606 роботов. Сейчас ищет 981 программист ...

Проверка нажатия кнопки submit

Тема в разделе "Прочие вопросы по PHP", создана пользователем ivan89, 15 авг 2013.

  1. ivan89

    ivan89 Новичок

    С нами с:
    6 авг 2013
    Сообщения:
    10
    Симпатии:
    0
    Я новичок в PHP, поэтому просьба относится с пониманием.
    Есть пример из книги (также есть подобный вопрос возник после просмотра видеурока) по отправки файлов с компьютера пользователя на сервер:

    1) Форма для отправки файла:

    Код (Text):
    1.  
    2.     <html>
    3.     <head>
    4.     <title>Administration — upload new files</title>
    5.     </head>
    6.     <body>
    7.     <h1>Upload new news files</h1>
    8.     <form enctype="multipart/form-data" action="upload.php" method=post>
    9.     <input type="hidden" name="MAX_FILE_SIZE" value="1000">
    10.     Upload this file: <input name="userfile" type="file">
    11.     <input type="submit" value="Send File">
    12.     </form>
    13.     </body>
    14.     </html>
    2) PHP-код, обрабатывающий отправку файла на сервер:

    Код (Text):
    1.  
    2.     <head>
    3.     <title>Uploading...</title>
    4.     </head>
    5.     <body>
    6.     <hl>Uploading</h1>
    7.     <?
    8.     if ($_FILES['userfile']=="none")
    9.     {
    10.         echo "Problem: no file uploaded";
    11.         exit;
    12.     }
    13.     if ($_FILES['userfile']['size']==0)
    14.     {
    15.         echo "Problem: uploaded file is zero length";
    16.         exit;
    17.     }
    18.     if ($_FILES['userfile']['type'] != "text/plain")
    19.     {
    20.         echo "Problem: file is not plain text" ;
    21.         exit;
    22.     }
    23.     if (!is_uploaded_file($_FILES['userfile']['name']))
    24.     {
    25.         echo "Problem: possible file upload attack";
    26.         exit;
    27.     }
    28.     $upfile = "/home/book/uploads/".$userfile_name ;
    29.     if (!copy($_FILES['userfile']['name'], $upfile))
    30.     {
    31.     echo "Problem: Could not move file into directory";
    32.     exit ;
    33.     }
    34.     echo "File uploaded successfully<br><br>" ;
    35.     $fp = fopen ($upfile, "r") ;
    36.     $contents = fread ($fp, filesize ($upfile) ) ;
    37.     fclose ($fp) ;
    38.     $contents = strip_tags ($contents) ;
    39.     $fp = fopen ($upfile, "w") ;
    40.     fwrite($fp, $contents) ;
    41.     fclose ($fp) ;
    42.     echo "Preview of uploaded file contents : <br><br>" ;
    43.     echo $contents;
    44.     echo "<br><br>" ;
    45.     ?>
    46.     </body>
    47.     </html>
    У меня возникли следующие вопросы:

    1) Почему в html-коде у кнопки типа `submit` не задано свойство `name`, например, `name="send"` и впоследствии обработка свойств посылаемого файла в php-коде не происходит внутри следующего условия:

    Код (Text):
    1.  
    2.     if (isset($_POST['send'])
    3.     {
    4.         if ($userfile=="none")
    5.         {
    6.             echo "Problem: no file uploaded";
    7.             exit;
    8.         }
    9.         if ($userfile_size==0)
    10.         {
    11.             echo "Problem: uploaded file is zero length";
    12.             exit;
    13.         }
    14.             ....
    15.     }
    (в видеуроке также не используется условия нажатия на кнопу типа `submit` и используется условие `if ($_FILES)`)
    2) Прочитав http://php.ru/manual/function.is-uploaded-file.html , правильно ли я понял, что функция `is_uploaded_file` проверяет был ли выбран файл с компьютера для отправки на сервер?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Откуда в твоем коде возьмется переменная $userfile и другие?
    В справке, на которую ты ссылаешся, всё четко и по русски написано. Например что надо использовать переменную $_FILES. Используй.

    Добавлено спустя 3 минуты 4 секунды:
    p.s. в старых книгах примеры подразумевают register_globals=on. это стремная фигня!
    чем пытаться в уме переводить ошибочный код на нормальный, лучше найти современную книгу по PHP 5.
     
  3. ivan89

    ivan89 Новичок

    С нами с:
    6 авг 2013
    Сообщения:
    10
    Симпатии:
    0
    Со всем согласен - исправил, но вопросы были не в этом и в ответ на загрузку файла с компа (я использую Denwer) выдает

    (это второй вопрос, есть ещё и первый)
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    1) ты же осознал проблему и понял как решать. действуй.
    2) в доках написано, что да, функция для этого. но ты неправильно скопировал имя индекса
    в доках прямо русским по белому написано: