如何设置 $_GET 变量

新手上路,请多包涵

如何设置 $_GET 函数将能够使用的变量,而无需提交带有 action = GET 的表单?

原文由 dave 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 533
2 个回答

您可以创建一个链接,在 href 中获取变量。

 <a href="www.site.com/hello?getVar=value" >...</a>

原文由 Gaurav 发布,翻译遵循 CC BY-SA 2.5 许可协议

正如 @Gaurav 和@Sander Marechal 所说,可以直接在URL 的末尾添加GET 参数以发送到网页。它适用于大多数情况。但不幸的是,这是一个问题,因为 URL 不能接受任何字符。一些特殊字符必须正确编码才能获得 有效的 URL

假设您有一个 index.php ,并且您想将 a 设置为 包含特殊字符的值 &b= 。当我提交以下代码的表单时,发送的 URL 是 index.php?a=&b= 并且 PHP 打印 Array ( [a] => [b] => ) 。因此,PHP 认为有两个参数,但我只想要参数 a

您可能还会注意到表单方法设置为 POST,因为如果您将其设置为 GET,则操作 URL 末尾的参数将被忽略。有关详细信息,请参阅此 @Arjan 的答案

 <form action="index.php?a=&b=" method="post">
    <input type="submit">
</form>
<?php print_r($_GET); ?>

一种解决方案是使用 PHP 函数 urlencode 。但是,正如您在下面的代码中看到的那样,使用起来并不是很方便,尤其是当您有很多参数要编码时。当我提交此表单时,发送的 URL 是 index.php?a=%26b%3D 并且 PHP 按预期打印 Array ( [a] => &b= )

 <form action="index.php?a=<?=urlencode("&b=")?>" method="post">
    <input type="submit">
</form>
<?php print_r($_GET); ?>

但是,我建议使用 hidden input 而不是 urlencode 函数。多亏了这个标签,您可以发送由 PHP 动态设置的 GET 参数。此外,这些参数会自动使用 URL 标准进行编码。并且你不需要使用 & 来分隔几个参数:使用一个输入来设置一个参数。当我提交此表单时,发送的 URL 是 index.php?a=%26b%3D 并且 PHP 按预期打印 Array ( [a] => &b= )

 <form action="" method="get">
    <input type="hidden" name="a" value="<?php echo "&b="; ?>">
    <input type="submit">
</form>
<?php print_r($_GET); ?>

原文由 orthose 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏