За последние 24 часа нас посетили 20523 программиста и 1210 роботов. Сейчас ищут 683 программиста ...

Получение текста из текстового поля

Тема в разделе "PHP для новичков", создана пользователем blroman, 24 окт 2020.

  1. blroman

    blroman Новичок

    С нами с:
    24 окт 2020
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Canada
    Здравствуйте.
    Я новичок в PHP. Я не могу понять как получить текст из текстового поля формы. $_POST не работает в моём случае. Далее приведен код и ХТМЛ разметка. Пользователь должен заполнить все поля, загрузить файлы, а джаваскрипт и PHP должны залить эти файлы на сервер. Я хочу добавить в проект пару строк кода, которые будут создавать отдельные папки для файлов. Я пробовал написать $_POST['galName']; но это не принимает никакого значения. Заранее спасибо!
    HTML:
    1. <form method="post" enctype="multipart/form-data">
    2.         <div class="galName">
    3.             <label for="galName">Give name to your gallery</label>
    4.             <input type="text" id="galName" name="galName"/>
    5.         </div>
    6.         <div class="author">
    7.             <label for="author">Author: </label>
    8.             <input type="text" id="author">
    9.         </div>
    10.         <div class="files">
    11.             <input type="file" name="files[]" multiple>
    12.             <input type="submit" value="Upload File" name="submit">
    13.         </div>
    14. </form>
    15.  
    16. <script src="upload.js"></script>
    Код (Javascript):
    1. const url = 'process.php';
    2. const form = document.querySelector('form');
    3.  
    4. function createNewGallery(){
    5.     if(!document.getElementById("galName").value)
    6.         alert("You must give name to your gallery");
    7.     if(document.querySelector('[type="file"]').files.length==0)
    8.         alert('You must upload at least one file');
    9.     if(!document.getElementById("author").value)
    10.         alert("You must give author's name");
    11. }
    12. function preview(){
    13.  
    14. }
    15.  
    16. form.addEventListener('submit', e => {
    17.     e.preventDefault();
    18.  
    19.     createNewGallery();
    20.     const files = document.querySelector('[type="file"]').files;
    21.     const formData = new FormData();
    22.  
    23.     for (let i = 0; i < files.length; i++) {
    24.         let file = files[i];
    25.  
    26.         formData.append('files[]', file);
    27.     }
    28.  
    29.     fetch(url, {
    30.         method: 'POST',
    31.         body: formData
    32.     }).then(response => {
    33.         return response.text();
    34.     }).then(data => {
    35.         console.log(data);
    36.     });
    37.     form.reset();
    38. });
    PHP:
    1. <?php
    2. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    3.     if (isset($_FILES['files'])) {
    4.         $errors = [];
    5.         $path = 'uploads/';
    6.         $dir=$_POST['galName'];
    7.         $extensions = ['jpg', 'jpeg', 'png', 'gif'];
    8.         if(!isset($dir))
    9.             echo 'ERROR! Empty string';
    10.         echo $dir;
    11.        
    12.        
    13.         $all_files = count($_FILES['files']['tmp_name']);
    14.  
    15.         for ($i = 0; $i < $all_files; $i++) {
    16.             $file_name = $_FILES['files']['name'][$i];
    17.             $file_tmp = $_FILES['files']['tmp_name'][$i];
    18.             $file_type = $_FILES['files']['type'][$i];
    19.             $tmp = explode('.', $_FILES['files']['name'][$i]);
    20.             $file_ext = strtolower(end($tmp));
    21.  
    22.             $file = $path . $file_name;
    23.  
    24.             if (!in_array($file_ext, $extensions)) {
    25.                 $errors[] = 'Extension not allowed: ' . $file_name . ' ' . $file_type;
    26.             }
    27.  
    28.             if (empty($errors)) {
    29.                 move_uploaded_file($file_tmp, $file);
    30.             }
    31.         }
    32.  
    33.         if ($errors) print_r($errors);
    34.     }
    35. }
    36. ?>
     
  2. twim32

    twim32 Активный пользователь

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Не мешайте мух с котлетами:
    1. Форма 1: создаём дирректорию с именем автора и галлереи.
    2. Форма 2 делаем форму загрузки фаилов.

    Иначе каждый раз пользователь должен будет писать 1 в 1 название своей галлереи и имя, чтобы дозагрузить фаилы...Это жутко неудобно.
     
  3. blroman

    blroman Новичок

    С нами с:
    24 окт 2020
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Canada
    @twim32 Спасибо за ответ. Я знаю это. Я эти формы сам размечал. Мне бы узнать как средствами PHP получить пользовательский ввод из поля galName. Функции управления галлереями будут добавлены позже.
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.827
    Симпатии:
    738
    Адрес:
    Татарстан
    Ну это же просто - $_POST['galName']
     
  5. blroman

    blroman Новичок

    С нами с:
    24 окт 2020
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Canada
    Да, всё верно. Но в данном случае, скрипт возвращает мне пустую переменную.
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.827
    Симпатии:
    738
    Адрес:
    Татарстан
    Так потому что вы не отправляете ничего кроме файлов
     
  7. blroman

    blroman Новичок

    С нами с:
    24 окт 2020
    Сообщения:
    19
    Симпатии:
    0
    Адрес:
    Canada
    @ADSoft спасибо за помощь. Я понял как это сделать. Я добавил в код джаваскрипта
    Код (Javascript):
    1. const galName=document.getElementById('galName');
    2. const author=document.getElementById('author');
    3.  
    4. formData.append('galName',galName);
    5. formData.append('author',author);
    6.  
    7. и так далее...
    а в PHP просто добавил
    PHP:
    1. $galName=$_POST['galName'];
    2. $author=$_POST['author'];
     
  8. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.827
    Симпатии:
    738
    Адрес:
    Татарстан
    хорошо