2015-04-29 3 views
1

Я пишу простую систему регистрации & Я бы хотел сделать самообновление «GET», чтобы избежать повторной отправки данных при обновлении (шаблон POST-Redirect-GET). Как я знаю, что есть несколько способов сделать это:Избегайте повторной отправки данных на странице обновления

  1. header('Location:main.php');
  2. echo '<body onload="window.location = \''.$HTTP_SERVER_VARS['PHP_SELF'].'\'">body</body>';

  3. echo '<meta http-equiv="refresh" content="0;url='.$HTTP_SERVER_VARS['PHP_SELF'].'">';

Есть мои quesions:

  1. Какой метод самое правильное?
  2. Почему метод 3. не работает ?. Он перенаправляет, но после , когда я нажимаю кнопку «Обновить», я до сих пор получаю сообщение «Вы хотите отправить сообщение повторно отправить данные»?

ответ

0

«Самый правильный» - это 1., потому что это HTTP, просто убедитесь, что вы возвращаете временный код перенаправления, иначе пользователи с прокси-серверами в конечном итоге не смогут использовать вашу систему. Другие два полагаются на реализацию браузера (хорошо технически, 1 тоже) и не гарантируется работа.

Однако вам следует рассмотреть 4. использование AJAX и не беспокоиться о проблемах прошлого века.

+0

Что вы подразумеваете под «временным кодом перенаправления»? Можете ли вы привести пример? – Mulligan1981

+0

@ Mulligan1981 302 –

+0

Вариант один - единственная реальная возможность для меня. Остальные двое - плохая практика и показывают недостаточное понимание того, как приложение должно быть спроектировано, если это то, что вы в конечном итоге используете. –

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