我有一系列类似的网页,其网址与www.mydomain.com/group?id=1
一样。
从这些页面中的每一页都有一个表单,将其值发布到服务器。我需要弄清楚表单发布时组的id
是什么。我知道能够使用$_SERVER['HTTP_REFERER']
然后我可以使用正则表达式来获取id
。但是,我想知道PHP中是否有任何东西可以让你获得以前的$ _GET变量?
或者,人们认为将当前组ID存储为会话变量更好吗?
答案 0 :(得分:3)
是的,会话是最佳选择。使用会话存储它们并在每个其他页面上获取组。这是一种正确的方式。
尽管如此,也可以为每个页面提供$ _GET。使用两种方式(AFAIK)。
使用参数创建完全相同的URL字符串并将其一起发送,因为您要从一个页面重定向到另一个页面。
parse_url()
之类的函数来获取查询字符串并将其传递给使用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
组。对于多个页面并存储其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"]) {
}