$ _SERVER [‘HTTP_REFERER’] нормально ли использовать его с несколькими формами

Это то, что я использую после каждой формы, чтобы вернуться на предыдущую страницу в многостраничной форме:

$url = htmlspecialchars($_SERVER['HTTP_REFERER']);
echo "<a href='$url'>GO BACK</a>";

Но я не уверен, что это будет работать нормально. Есть ли лучший способ вернуться на предыдущую страницу. Я не хочу использовать заголовок (location:), возможно многократная отправка, то есть одна для отправки формы, а другая для отправки. Но я не уверен, как правильно это реализовать.

2

Решение

Как сказано в документация, не все пользовательские агенты устанавливают реферер:

‘HTTP_REFERER’

Адрес страницы (если есть), на которой пользовательский агент направлен на текущую страницу. Это устанавливается пользовательским агентом. Не все пользовательские агенты будут устанавливать это, а некоторые предоставляют возможность изменять HTTP_REFERER как функцию. Короче говоря, этому нельзя доверять.

Другими словами, $_SERVER['HTTP_REFERER'] может быть пустым.

Я бы предпочел использовать JavaScript:

<a href="javascript:history.go(-1)">Back</a>

Иногда можно определить предыдущую страницу по логике вашего приложения. Например, если страница «Шаг 2» идет после страницы «Шаг 1», то я бы сгенерировал URL в соответствии с логикой: /registration/step1, /registration/step2и т. д. Это самый надежный способ.

2

Другие решения

Других решений пока нет …