Доброе время суток Уважаемые. Опыт программирования в PHP небольшой, и недавно столкнулся вот с какой проблемой: Есть три странички, которые должны открываться одна после другой: 1. select_file.php на которой я указываю файл для загрузки и нажимаю кнопку "Продолжить" 2. check_file_data.php на которой я проверяю содержимое файла и показываю сообщение об ошибках, в нем также есть кнопка "Продолжить" 3. import_data.php скрипт загрузки данных из этого файла в БД Я передаю файл через обычный "input" типа "file", в форме методом POST. В файле check_file_data.php я получаю его вот так: Код (Text): if ($_FILES['filename']['error'] == 0) { if (is_uploaded_file($_FILES['filename']['tmp_name'])) { if (is_readable($_FILES['filename']['tmp_name'])) { $locCSV = new TiceCSVReader($_FILES['filename']['tmp_name'], $_POST["encoding"], (isset($_POST["has_header"]) ? True : False)); ..... ..... } } } Передача файла из первого скрипта во второй работает отлично, но я не пойму как реализовать передачу полученного файла дальше в import_data.php. Насколько я понимаю, временный файл с именем $_FILES['filename']['tmp_name'], полученный в скрипте check_file_data.php умрет сразу же после завершения его выполнения, т.е. к моменту открытия import_data.php файла уже не будет. Или я все-таки ошибаюсь? Посоветуйте как быть?
1 и 2 пункты можно и нужно реализовать на стороне клиента. Третий уже на стороне сервера, и там же финальную проверку на случай подделки данных.
Боюсь второй пункт нельзя реализовать на стороне клиента, т.к. проверка валидности файла подразумевает работу с БД. AJAX использовать как-то не хочется...
Если пользователь отправляет файл с ошибками, то этот файл тебе по-любому в таком виде не нужен. Соответственно и сохранять его ты не будешь. А если с файлом все ок, тогда тебе не нужно выводить сообщения об ошибках, так как с файлом все в порядке. Так не проще ли сделать два скрипта? Во втором скрипте ты проверяешь соответствие файла твоим требованиям. Если все нормально, то загружаешь его на сервер. В противном случае указываешь на ошибке в файле.
Не совсем так. Второй скрипт это как-бы "предварительный просмотр" при импорте, он нужен при любом раскладе.
Ты бы поподробнее объяснил задачу: что за файл, что за проверка. Может быть здесь придумали бы какое-то интересное решение для твоей задачи.
Это небольшая надстройка к биллингу. Основная задача загружать данные в виде CSV или XML файлов. На втором этапе (на серверной стороне) файл анализируется и проверяется на ошибки, а пользователю отображается сводная информация о том, сколько строк будет загружено, сколько из них будет добавлено, сколько обновлено, сколько с ошибками и т.д. На основании этих данных пользователь принимает решение о продолжении или отмене дальнейшей загрузки файла. Сейчас у меня в первом скрипте две кнопки: "Проверить" и "Загрузить", "Проверить" открывает второй скрипт, а "Загрузить" третий, т.е. я сначала проверяю файл, потом возвращаюсь назад, и жму кнопку "Загрузить", что не очень удобно.