PRG или Post / Redirect / Get - это просто шаблон, который вы можете использовать для предотвращения появления окон сообщений. То, как вы используете его подробно (а статья содержит только общие рекомендации), зависит от ваших потребностей.
Если вы хотите пометить флэш-сообщение об успехе в файле cookie, в сеансе или в переменной get, это полностью ваше дело. Кстати, второе перенаправление не поможет, вы узнаете об этом, если поиграете с ним.
Единственная важная часть заключается в том, что после получения запроса POST вы выполняете перенаправление. Затем пользователь все еще может перемещаться назад и вперед в истории без запроса повторной отправки данных POST.
Шаблон работает и это хорошая вещь. Всего два дня назад я сделал это снова, и пошаговый установщик weppapp был намного приятнее ориентироваться в интерфейсе браузера.
О вашем перенаправлении
Этот код неверен:
header('Location:/login/form.php?success=true');
Прежде всего, вам нужно иметь пробел после двоеточия:
header('Location: /login/form.php?success=true');
Тогда адрес должен быть абсолютным URI, он должен содержать полный URL:
header('Location: http://example.com/login/form.php?success=true');
Рядом с header()
вы должны предоставить тело сообщения в соответствии с RFC, многие так называемые «веб-разработчики» даже не знают:
$url = 'http://example.com/login/form.php?success=true';
header(sprintf('Location: %s', $url));
printf('<a href="%s">Moved</a>.', $url);
exit;
Не забывайте выход. Конечно, это в значительной степени заново изобретает колесо, вместо этого установите расширение http PHP и просто выполните следующую строку:
http_redirect('/login/form.php?success=true');
Вы обнаружите, что отличный помощник здесь .
Напомним: важно то, что вы делаете перенаправление после публикации. Все остальное, например, передача переменной, зависит только от вас, как бы вы хотели это сделать.