Для второго вопроса header () будет работать, если вы используете его, прежде чем выводить какую-либо информацию на страницу. Однако, если вы выводите на экран, печатаете или имеете HTML перед этим, это выдаст ошибку.
Редактировать : В ответ на комментарий Жабы вам нужно будет сделать то, что предложил Аарон Харун. Попросите страницу сохранить данные $ _POST в базе данных или в файле (убедитесь, что вы их дезинфицируете!), Точно так же, как и при использовании любых данных $ _POST. Затем вам нужно будет использовать AJAX, чтобы получить ответ от второй страницы PHP, которая просто проверяет наличие обновленных данных, где бы вы ни сохранили их. Если ответ возвращается, то вы перенаправляете с помощью перенаправления JavaScript.
Единственный другой способ сделать это без использования AJAX - обновить страницу с помощью элемента мета-обновления HTML через определенные интервалы времени, чтобы проверить, были ли получены данные $ _POST. HTML выполнит обновление, PHP выполнит проверку, и вы сможете использовать любой из них для перенаправления.