Здравствуйте. Я новичок в PHP. Я не могу понять как получить текст из текстового поля формы. $_POST не работает в моём случае. Далее приведен код и ХТМЛ разметка. Пользователь должен заполнить все поля, загрузить файлы, а джаваскрипт и PHP должны залить эти файлы на сервер. Я хочу добавить в проект пару строк кода, которые будут создавать отдельные папки для файлов. Я пробовал написать $_POST['galName']; но это не принимает никакого значения. Заранее спасибо! Спойлер: HTML форма HTML: <form method="post" enctype="multipart/form-data"> <div class="galName"> <label for="galName">Give name to your gallery</label> <input type="text" id="galName" name="galName"/> </div> <div class="author"> <label for="author">Author: </label> <input type="text" id="author"> </div> <div class="files"> <input type="file" name="files[]" multiple> <input type="submit" value="Upload File" name="submit"> </div> </form> <script src="upload.js"></script> Спойлер: upload.js Код (Javascript): const url = 'process.php'; const form = document.querySelector('form'); function createNewGallery(){ if(!document.getElementById("galName").value) alert("You must give name to your gallery"); if(document.querySelector('[type="file"]').files.length==0) alert('You must upload at least one file'); if(!document.getElementById("author").value) alert("You must give author's name"); } function preview(){ } form.addEventListener('submit', e => { e.preventDefault(); createNewGallery(); const files = document.querySelector('[type="file"]').files; const formData = new FormData(); for (let i = 0; i < files.length; i++) { let file = files[i]; formData.append('files[]', file); } fetch(url, { method: 'POST', body: formData }).then(response => { return response.text(); }).then(data => { console.log(data); }); form.reset(); }); Спойлер: process.php PHP: <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_FILES['files'])) { $errors = []; $path = 'uploads/'; $dir=$_POST['galName']; $extensions = ['jpg', 'jpeg', 'png', 'gif']; if(!isset($dir)) echo 'ERROR! Empty string'; echo $dir; $all_files = count($_FILES['files']['tmp_name']); for ($i = 0; $i < $all_files; $i++) { $file_name = $_FILES['files']['name'][$i]; $file_tmp = $_FILES['files']['tmp_name'][$i]; $file_type = $_FILES['files']['type'][$i]; $tmp = explode('.', $_FILES['files']['name'][$i]); $file_ext = strtolower(end($tmp)); $file = $path . $file_name; if (!in_array($file_ext, $extensions)) { $errors[] = 'Extension not allowed: ' . $file_name . ' ' . $file_type; } if (empty($errors)) { move_uploaded_file($file_tmp, $file); } } if ($errors) print_r($errors); } } ?>
Не мешайте мух с котлетами: 1. Форма 1: создаём дирректорию с именем автора и галлереи. 2. Форма 2 делаем форму загрузки фаилов. Иначе каждый раз пользователь должен будет писать 1 в 1 название своей галлереи и имя, чтобы дозагрузить фаилы...Это жутко неудобно.
@twim32 Спасибо за ответ. Я знаю это. Я эти формы сам размечал. Мне бы узнать как средствами PHP получить пользовательский ввод из поля galName. Функции управления галлереями будут добавлены позже.
@ADSoft спасибо за помощь. Я понял как это сделать. Я добавил в код джаваскрипта Код (Javascript): const galName=document.getElementById('galName'); const author=document.getElementById('author'); formData.append('galName',galName); formData.append('author',author); и так далее... а в PHP просто добавил PHP: $galName=$_POST['galName']; $author=$_POST['author'];