【问题标题】:PHP How do I retain all GET vars in links?PHP 如何保留链接中的所有 GET 变量?
【发布时间】:2010-10-21 20:23:22
【问题描述】:

我有一些 PHP 代码可以动态生成动态数据表。通过单击各种链接,您可以“优化”数据表。我想要的是这些链接中的每一个都保留当前的 ​​GET 信息并添加到其中。即:

$allPreviousVars = ???; // Could be 20+ vars
echo "<a href='".$allPreviousVars."&newVar=2'>Link</a>";

我可以想办法通过循环遍历 $_GET 来做到这一点,但肯定有更快的方法来做到这一点吗?

【问题讨论】:

  • 我看到你没有清理你的输入变量。
  • "???"实际上是我的输入清理功能。 :P

标签: php variables get hyperlink


【解决方案1】:

$_SERVER["QUERY_STRING"] 怎么样?

编辑: 既然你好心给了我这个答案,我应该补充一件事。您应该在输出之前将上述变量包装在 htmlspecialchars() 中。否则,有人可能会在其中键入带有 "&gt; 的 URL,这会破坏您的链接。

【讨论】:

    【解决方案2】:

    我这样做如下:

    <?php echo http_build_query(array_merge($_GET, array('foo'=>'bar', 'foo2'=>'bar2')); ?>
    

    请注意,任何现有的 'foo' 或 'foo2' 键都将被替换。

    【讨论】:

    • 一年多之后,这正是我想要的。谢谢!
    【解决方案3】:

    如果您需要从修改后的数组生成查询字符串,请使用http_build_query()。如果您只想将查询字符串发送到当前页面,请按照建议进行操作并使用 $_SERVER["QUERY_STRING"]。

    【讨论】:

      【解决方案4】:

      我可能会这样做:

      $query = mySanitizeFunction($_GET);
      $url = http_build_query($query) . '&newVar=2';
      

      【讨论】:

      • 不过,如果 $_GET 为空,那将破坏您的 URL。
      【解决方案5】:

      按照您的建议,最好的办法是循环遍历 $_GET 的内容,从现有查询参数和您的覆盖位的混合体中构造 URL。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多