У меня есть форма с текстовыми вводами и файлами; текстовые поля проверяются. Есть ли способ, чтобы форма помнила, какие файлы пользователь уже выбрал, если они попали в submit, но нужно вернуться, потому что одно из текстовых полей не подтвердилось?
Из соображений безопасности вы не можете «предварительно заполнить» содержимое поля для загрузки файлов. Кроме того, это означало бы, что файл будет загружаться повторно каждый раз, когда будет отправлена форма, что не будет хорошо.
Вместо этого сделайте следующее:
file_upload
. file
имени, содержащим имя только что загруженного файла. file_upload
, обработайте загрузку и сохраните новое значение в file
. псевдокод:
<?php $file = null; if (!empty($_POST['file'])) { $file = $_POST['file']; } if (!empty($_FILES['file_upload'])) { // process upload, save file somewhere $file = $nameOfSavedFile; } // validate form ?> <input type="file" name="file_upload" /> <input type="hidden" name="file" value="<?php echo $file; ?>" /> <?php if (!empty($file)) { echo "File: $file"; } ?>
Этот механизм может позволить любому пользователю требовать, чтобы файлы других пользователей были их собственными, включив имя file
которое они предположили, существует на вашем сервере. Вы должны убедиться, что загруженные файлы явно связаны с конкретным пользователем, чтобы избежать этой проблемы.
поля ввода файлов доступны только для чтения, вы не можете установить для них начальное значение
Вы можете загрузить файлы в любом случае и отобразить имена файлов вместо поля выбора файла. Чтобы запомнить поля, вы можете использовать переменную $ _SESSION.