2016-10-27 2 views
0

У меня есть на моем веб-сайте форма для заполнения (включая ввод импорта файла и несколько других стандартных текстовых входов).
Я использую $ _POST() для извлечения входных данных, а затем вызывает функции php для сохранения данных в базе данных mysql.Завершение работы php-функций перед заголовком()

После того, как форма заполнена и кнопка нажата представить (<form action="" method="post" enctype="multipart/form-data">), я хочу, чтобы все функции PHP для запуска, а затем и только потом перенаправление на другую страницу (с помощью header()).

Проблема заключается в том, что мы должны поставить header() перед вызовом нашей php-функции, иначе php возвращает ошибку. Поэтому header() помещается перед функциями php.

Это то, что он выглядит следующим образом:

if(isset($_POST)){ 
header("Location: other_page.php"); 

save_name($_post['name']); 
//... more php functions to save data(including input file) 
} 

Это не проблема, большую часть времени, но иногда кажется, что страница перенаправляется прежде чем все функции PHP были работать правильно Wich, очевидно, это большая проблема ...

Я думаю, что это вызвано, когда функции слишком долго выполняются (т. е. когда входной файл слишком большой?), и перенаправление вступает в силу до того, как функции успеют закончить.

Если бы я мог получить помощь, чтобы обойти эту проблему, было бы здорово! =)

ответ

2

Проблема заключается в том, что мы должны поставить header() перед вызовом нашей php-функции, иначе php возвращает ошибку.

Нет. Вам просто нужно включить функцию PHP output buffering, которая, скорее всего, решит вашу проблему.

+0

Ах, отлично! Я не знал об этой возможности. Итак, если я поставил header() после функций, означает ли это, что все функции будут выполняться до перенаправления? – Jackymamouth

+0

Да, в соответствии с документами: * Функции управления выводом позволяют вам контролировать, когда вывод отправляется из сценария. Это может быть полезно в нескольких разных ситуациях * ***, особенно если вам нужно отправить заголовки в браузер после того, как ваш скрипт начал выводить данные. *** –

+0

Используя простой пример выше; как бы вы это реализовали? (Извините, я новичок в этом: S) – Jackymamouth

Смежные вопросы