我需要转到给定页面,如果经过身份验证则将用户登录,然后重定向到另一个页面。我的问题围绕着将url添加到url中的第一页的其他页面。
我的链接看起来像index.php?pg=page1&controller=default&data=123&nextPg=xxx
。
虽然我将nextPg显示为xxx,但我希望它为pg=page2&controller=whatEver&data=432
。
我显然无法做到这一点,因为名称是重复的。我可以更改第二个URL的名称或制作第一个和第二个数组,但是,不愿意。理想情况下,当到达第一页时,我的$ _GET可以转换为类似以下内容:
array(
'pg'=>'page1',
'controller'=>'default',
'data'=>123,
'nextPg'=array('pg'=>'page2','controller'=>'whatEver','data'=>321)
)
这是如何最好地完成的?
答案 0 :(得分:1)
一种选择是将它们存储在会话中。检查您想要将它们存储在会话中的Flash消息的概念,仅用于下一个请求。
如果您确实需要通过URL传递此信息,则可以执行以下操作。
假设您拥有数组中的数据,您可以首先序列化数组,然后base64_encode
,然后将此值传递给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>';
然后,您可以检索,解码和取消序列化下一页中的值,您将获得相同的数组:
$nextPg = unserialize(base64_decode($_GET['nextPg']));
var_dump($nextPg);
产生:
array(3) {
["pg"]=>
string(5) "page2"
["controller"]=>
string(8) "whatEver"
["data"]=>
int(321)
}
顺便说一句,如果您决定使用上述方法,请尝试使用一些实际数据,以确保不会超过任何characters limit。