Это то, что я использую после каждой формы, чтобы вернуться на предыдущую страницу в многостраничной форме:
$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo "<a href='$url'>GO BACK</a>";
Но я не уверен, что это будет работать нормально. Есть ли лучший способ вернуться на предыдущую страницу. Я не хочу использовать заголовок (location:
), возможно многократная отправка, то есть одна для отправки формы, а другая для отправки. Но я не уверен, как правильно это реализовать.
Как сказано в документация, не все пользовательские агенты устанавливают реферер:
‘HTTP_REFERER’
Адрес страницы (если есть), на которой пользовательский агент направлен на текущую страницу. Это устанавливается пользовательским агентом. Не все пользовательские агенты будут устанавливать это, а некоторые предоставляют возможность изменять HTTP_REFERER как функцию. Короче говоря, этому нельзя доверять.
Другими словами, $_SERVER['HTTP_REFERER']
может быть пустым.
Я бы предпочел использовать JavaScript:
<a href="javascript:history.go(-1)">Back</a>
Иногда можно определить предыдущую страницу по логике вашего приложения. Например, если страница «Шаг 2» идет после страницы «Шаг 1», то я бы сгенерировал URL в соответствии с логикой: /registration/step1
, /registration/step2
и т. д. Это самый надежный способ.
Других решений пока нет …