Php 在url中包含url数据

Php 在url中包含url数据,php,url,Php,Url,我需要转到一个给定的页面,如果用户经过身份验证,请登录,然后重定向到另一个页面。我的问题是在第一页的url中包含另一页的url 我有一个链接,看起来像index.php?pg=page1&controller=default&data=123&nextPg=xxx 虽然我将nextPg显示为xxx,但我希望它是pg=page2&controller=where&data=432 我显然不能这样做,因为名字是重复的。我可以更改第二个URL的名称,或者创建第一个和第二个URL的数组,但是,我宁愿不这

我需要转到一个给定的页面,如果用户经过身份验证,请登录,然后重定向到另一个页面。我的问题是在第一页的url中包含另一页的url

我有一个链接,看起来像
index.php?pg=page1&controller=default&data=123&nextPg=xxx

虽然我将nextPg显示为xxx,但我希望它是
pg=page2&controller=where&data=432

我显然不能这样做,因为名字是重复的。我可以更改第二个URL的名称,或者创建第一个和第二个URL的数组,但是,我宁愿不这样做。理想情况下,当进入第一页时,my$\u GET可以转换为以下内容:

array(
  'pg'=>'page1',
  'controller'=>'default',
  'data'=>123,
  'nextPg'=array('pg'=>'page2','controller'=>'whatEver','data'=>321)
)

如何最好地实现这一点?

一个选项是将它们存储在会话中。检查中闪存消息的概念,以便仅在下次请求时将其存储在会话中

如果您确实需要通过URL传递此信息,则可以执行以下操作

假设数组中有数据,可以先序列化数组,然后对其进行
base64\u编码
然后将此值传递给URL:

$nextPg_data = array('pg'=>'page2','controller'=>'whatEver','data'=>321);
$nextPg = base64_encode(serialize($nextPg_data));
echo '<a href="index.php?pg=page1&controller=default&data=123&nextPg=' . $nextPg . '">link</a>';

顺便说一句,如果您决定使用上述方法,请使用一些真实数据进行尝试,以确保不会超过任何值。

如果有人登录,您是否有侦听器,如果没有,则重定向到登录,然后在路上发送?如果是这种情况,您可以使用
$\u服务器['HTTP\u REFERER']
。如果没有,并且您只想存储另一个
$\u GET
字符串,那么您的确切示例应该可以(作为字符串或json)。@nuc。有些页面他们不需要登录就可以查看,有些则需要登录。如果他们在未登录时转到受限页面,则会重定向到希望页面。我不明白这有什么不同。请详细说明你的评论。谢谢,一个会议。我想那会有用的。而且,直到现在才听说过flash会话。我去看看。对于您的串行编码解决方案,这是有意义的。类似的解决方案,但使用json行得通吗?@user1032531我指的是“flash消息”(基于会话),而不是“flash会话”(我刚刚编辑了我的答案),我在我使用过的大多数(如果不是全部)框架中都看到了这一概念的实现。关于你的json问题,我看不出它与你已经拥有的数组有什么不同。我也不知道“flash messages”。在看到你编辑过的帖子之前,为数不多的几篇关于“flash会话”的文章似乎是合理的,不是吗?@user1032531我没有详细阅读代码,但似乎这就是我的意思。下面是另一个例子:
array(3) {
  ["pg"]=>
  string(5) "page2"
  ["controller"]=>
  string(8) "whatEver"
  ["data"]=>
  int(321)
}