PHP - $_SERVER['HTTP_REFERER'] - как сохранить один раз, а не снова при отправке формы

В PHP, как я могу хранить переменную "backurl"? (извлекается, как показано ниже внизу - когда необходимо применить следующие ограничения)

  • Переменная "backurl" хранит последний просмотренный php-скрипт.
  • При первом выполнении переменная "backurl" сохраняется и работает правильно
  • Когда форма отправляется через $_GET или $_POST в этом скрипте, переменная будет обновляться по мере изменения предыдущего URL. (Я не хочу, чтобы это произошло)

т.е. ОТ -> ДО (фактический результат - желаемый результат)
page1.php -> page2.php (ссылка идет на page1.php - по назначению)
page2.php -> page2.php? test = yes (ссылка идет на page2.php - я хочу вернуться на page1.php)

Если у кого-то есть предложения, как это сделать, большое спасибо!

$backurl =  $_SERVER['HTTP_REFERER'];

3 ответа

Решение

Вы могли бы использовать сеансы

<?php

session_start();
if(!isset($_SESSION['backurl'])){
$_SESSION['backurl'] = $_SERVER['HTTP_REFERER'];
}
?>
$_SESSION['backurl']; //contains the back url;

и если вам необходимо сбросить backurl:

unset($_SESSION['backurl']);

Установите backurl в session и получать к нему доступ в любое время и в любом месте

Есть несколько способов сделать это. Можно обновить ваш backurl, только если страница скрипта отличается, используя сеанс.

например (не проверено):

session_start();

if( $_SEVER['SCRIPT_NAME'] != $_SESSION['lastpage'] ){
    $_SESSION['backurl'] = $_SERVER['REQUEST_URI'];
}

Таким образом, вы будете обновлять backurl только при вызове другой php-страницы, оставляя его неизменным, когда переходите на одну и ту же страницу с другими параметрами (на основе вашего примера).

Адаптируйте код под свои нужды.

Другие вопросы по тегам