Я бы изменил способ размещения вашей логики, потому что в настоящее время она слишком сложна.Сохраняйте вещи очень простыми с 3 простыми файлами.
- index.php - основной файл «отображения», который отображает только формы.Больше ничего не делает.
- upload.php - обрабатывает часть загрузки и перенаправляет обратно на index.php
- process.php - аутентифицирует пользователя, обрабатывает все ожидающие файлы, затем перенаправляет обратно на индекс.php
Обратите внимание, что каждая форма отправляет данные в собственный обработчик ( upload.php и process.php ).Это делается с помощью атрибута action формы.Этот обработчик отвечает за фактическую логику загрузки или обработки ожидающего файла.
После того, как обработчик завершил свою работу, он перенаправляет обратно в index.php, который будет отображать форму загрузки и, при необходимости, также отображать форму процесса.
index.php
// Notice the actions on the forms. Each form sends data to its own handler
<form name="upload" method="post" action="upload.php" enctype="multipart/form-data">
...
// Don't include any logic in here - only inputs and buttons.
// All the upload logic is in upload.php
</form>
// Only show this form if there are pending files to process
// ** Side note - this could just be a link which points to process.php
// ** It does not need to be a form.
if (exists (pending file(s) to process) {
<form name="process" method="post" action="process.php">
...
// Don't include any logic in here - only inputs and buttons.
// All the processing logic is in process.php
</form>
}
upload.php
<?php
if (request method === POST) {
upload file logic
}
redirect back to index.php
process.php
<?php
if (request method === POST) {
authenticate user - if !authenticated > redirect to login
process the file
}
redirect back to index.php