【问题标题】:Passing on multiple GET variables with the "next" parameter in the URL在 URL 中使用“next”参数传递多个 GET 变量
【发布时间】:2010-08-26 22:47:24
【问题描述】:

我在使用“next”传递多个 $_GET 变量时遇到问题。

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

login?next=initial_page?email=john_doe@gmail.com&activate_key=1421sdxzcxz213xz

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

一个解决方案是使用 cookie,但有什么方法可以让 $_GET 继续工作吗?

谢谢!

【问题讨论】:

    标签: php redirect parameters get


    【解决方案1】:

    您需要使用urlencode 对参数数据进行编码——类似这样:

    echo '<a href="login?next=' . urlencode('initial_page?email=john_doe@gmail.com&activate_key=1421sdxzcxz213xz') . '">link</a>';
    

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

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

    ...这将被正确解释。

    【讨论】:

      【解决方案2】:

      您可以将&amp; 编码为%26

      【讨论】:

        【解决方案3】:
        login?next=initial_page?email=john_doe@gmail.com&amp;activate_key&amp;1421sdxzcxz213xz
        

        【讨论】:

          【解决方案4】:

          试试这个:

          header('Location: login?next='.rawurlencode('initial_page?email=john_doe@gmail.com&activate_key=1421sdxzcxz213xz'));
          

          自动生成 302 响应。

          测试代码:

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

          【讨论】:

            猜你喜欢
            • 2012-04-14
            • 2020-11-24
            • 2014-05-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-04-14
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多