在PHP中获取上一页GET参数

时间:2012-03-05 18:47:22

标签: php http get

我有一系列类似的网页,其网址与www.mydomain.com/group?id=1一样。

从这些页面中的每一页都有一个表单,将其值发布到服务器。我需要弄清楚表单发布时组的id是什么。我知道能够使用$_SERVER['HTTP_REFERER']然后我可以使用正则表达式来获取id。但是,我想知道PHP中是否有任何东西可以让你获得以前的$ _GET变量?

或者,人们认为将当前组ID存储为会话变量更好吗?

3 个答案:

答案 0 :(得分:3)

是的,会话是最佳选择。使用会话存储它们并在每个其他页面上获取组。这是一种正确的方式。


尽管如此,也可以为每个页面提供$ _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中获得附加数据,这可能是不合需要的。


  3. 更新

    如果您使用第二个选项,您应该记住我提供的解决方案是演示,不适合多个$_GET组。对于多个页面并存储其SESSIONS,您必须定义单独的键来标识备份。有点像

    $_SESSION['mypage.php']['GET_BACKUP'] = $_GET;
    

答案 1 :(得分:2)

多页表单通常称为“向导”。如果以下页面依赖于后续值,则最常见的解决方案是将表单存储在$_SESSION中。

答案 2 :(得分:1)

  

我想知道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"]) {

}