2010-08-26 73 views
0

我遇到了多个$_GET变量与“下一个”传递的问题。在URL中传递多个GET变量与“下一个”参数

我将用户重定向到登录页面:

[email protected]&activate_key=1421sdxzcxz213xz 

的问题是,激活密钥被视为登录页面上的第二$_GET参数(用“未来”一起),而不是被部分重定向$ _GET。

一个解决方案是使用cookie,有没有什么办法可以使这个工作与$_GET虽然呢?

谢谢!

回答

8

您需要使用urlencode编码参数数据 - 这样的事情:

echo '<a href="login?next=' . urlencode('[email protected]&activate_key=1421sdxzcxz213xz') . '">link</a>'; 

这将产生一个像这样的链接:

<a href="login?next=initial_page%3Femail%3Djohn_doe%40gmail.com%26activate_key%3D1421sdxzcxz213xz">link</a> 

...这将正确地解释。

+0

真棒,非常感谢,它的工作:) – Cat 2010-08-26 22:59:45

+0

@Cat,也许你应该考虑选择这是正确的? – ServAce85 2011-07-19 15:44:42

2

您可以将&的网址编码为%26

0

尝试这种情况:

header('Location: login?next='.rawurlencode('[email protected]&activate_key=1421sdxzcxz213xz')); 

其中自动生成一个302响应。

测试代码:

<?php 
if (isset($_GET['next'])) 
    print $_GET['next']; 
else 
    header('Location: '.$_SERVER['REQUEST_URI'].'?next='.rawurlencode('[email protected]&activate_key=1421sdxzcxz213xz')); 
?>