如何设置 $_GET
函数将能够使用的变量,而无需提交带有 action = GET
的表单?
原文由 dave 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如 @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 许可协议
1 回答4.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答1.4k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
795 阅读
您可以创建一个链接,在 href 中获取变量。