Получение предыдущей страницы GET параметров в PHP - PullRequest
0 голосов
/ 05 марта 2012

У меня есть ряд похожих страниц, у которых URL-адрес выглядит следующим образом: www.mydomain.com/group?id=1.

На каждой из этих страниц есть форма, которая отправляет свои значения на сервер. Мне нужно выяснить, какой была id группы, когда форма была опубликована. Я знаю, что могу использовать $_SERVER['HTTP_REFERER'], и тогда, возможно, я мог бы использовать регулярное выражение, чтобы получить id. Однако мне было интересно, есть ли в PHP что-нибудь, что позволило бы вам получить предыдущие переменные $ _GET?

В качестве альтернативы, люди думают, что гораздо лучше сохранить текущий идентификатор группы в качестве переменной сеанса?

Ответы [ 3 ]

3 голосов
/ 05 марта 2012

Да, сессия - это путь кХраните их и получайте группы на каждой другой странице, используя сеанс.Это правильный способ.


Несмотря на то, что также возможно сделать $ _GET доступным для каждой страницы.Используя два способа (AFAIK).

  1. Создайте точно такую ​​же строку URL с параметрами и отправьте их вместе, как вы перенаправляете со страницы на страницу.

    • Или используйте такие функции, как parse_url(), чтобы получить только строку запроса и передать их
  2. Используйте Session для резервного копирования $ _GET и переназначения его$ _GET на каждой странице.Поместите приведенный ниже фрагмент или каждую страницу, на которую вы перенаправляете.

    if(isset($_SESSION['GET_BACKUP']) { //Check if there was a backup before
         $_GET = $_SESSION['GET_BACKUP'];  //if yes use it
    }
    
    if(isset($_GET) && count($_GET)) { //if not and GET value is sent
         $_SESSION['GET_BACKUP'] = $_GET; //backup it
    }
    // Now use the get as you used to via $_GET
    

    Таким образом вы не получите прикрепленные данные в URL, что может быть нежелательно.


Обновление:

Если вы собираетесь воспользоваться вторым вариантом, вы должны помнить, что предоставленное мною решение представляет собой демо и не подходит для более чем одного $_GET группа.Для нескольких страниц и хранения их СЕССИЙ вы должны определить отдельные ключи для идентификации резервной копии.Вроде как

$_SESSION['mypage.php']['GET_BACKUP'] = $_GET;
2 голосов
/ 05 марта 2012

Многостраничная форма обычно называется «волшебником».Если последующие страницы зависят от последующих значений, наиболее распространенным решением является сохранение частей формы в $_SESSION.

1 голос
/ 05 марта 2012

Интересно, есть ли в PHP что-нибудь, что позволило бы вам получить предыдущие переменные $ _GET

Нет.Однако вы можете использовать SESSION для сохранения всех параметров GET вручную.

//first page
$_SESSION["pages"][] = $_GET;

//second page, before setting GET parameters for current page
$last = count($_SESSION["pages"]) - 1;
if ($_SESSION["pages"][$last]["whatever"]) {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...