Переадресация на страницу «Успешный заказ» после успешной отправки формы. - PullRequest
0 голосов
/ 07 января 2012

У меня есть форма, которая должна быть перенаправлена ​​на страницу успеха заказа после нажатия кнопки «Отправить». Я пытался использовать hearder (), но заголовки уже отправлены ошибка пришла. Ни в коем случае я не могу поместить это в верхнюю часть php-файла, поскольку мне приходится перенаправлять на страницу старого заказа, если в отправленной форме есть ошибки.

Есть ли другой способ сделать это?

Еще одно сомнение, В настоящее время я использую следующее, чтобы очистить все сессии!

<?php session_start();
    session_unset();
    session_destroy();
    session_write_close();
    setcookie(session_name(),'',0,'/');
    session_regenerate_id(true); ?>

Так нужно ли мне снова использовать <?php session_start(); ?> в форме, если я собираюсь использовать сессию на той же странице после того, как приведенное выше дает n кода?

Ответы [ 2 ]

2 голосов
/ 07 января 2012

Вы могли бы сделать пару вещей,

  1. Используйте javascript для перенаправления пользователя путем вывода <script type="text/javascript">parent.location.href = 'nextpage.php';</script>
  2. Вы можете использовать Буферизация вывода для отправки заголовка HTTP после вывода.

    Пока активна буферизация вывода, из сценария не отправляется вывод (кроме заголовков), вместо этого вывод сохраняется во внутреннем буфере.

  3. Вы можете добавить метаобновление заголовок <meta http-equiv="refresh" content="0;url=nextPage.php">
  4. Вы можете показать пользователю ссылку на следующую страницу и позволить ему самому щелкнуть по ней.
1 голос
/ 07 января 2012

Вы отправляете заголовки по содержимому, отправляемому в браузер, другими словами, что-то было отражено до того, как вы попытались header ();

Узнайте, что, выход;прежде чем вы хотите, чтобы заголовок ();чтобы попытаться выяснить проблему

, я бы никогда не предложил это, потому что это было бы ЧРЕЗВЫЧАЙНО плохой практикой, но заставил бы ее:

ob_clean(); // Cleans the output buffer
header("Location: redirect-url");

Очистить сессии:

$_SESSION = array();
session_destroy();

Обновление :

Да, вы должны снова использовать session_start(); для повторного запуска нового сеанса, но помните, что вы уничтожили старый сеанс, чтобы очистить данные -Новый сеанс = пустой сеанс

...