考虑这个形式:
<form action="http://www.blabla.com?a=1&b=2" method="GET">
<input type="hidden" name="c" value="3" />
</form>
当提交这个GET表单时,参数a和b将消失。 这有什么原因吗? 有没有办法避免这种行为?
考虑这个形式:
<form action="http://www.blabla.com?a=1&b=2" method="GET">
<input type="hidden" name="c" value="3" />
</form>
当提交这个GET表单时,参数a和b将消失。 这有什么原因吗? 有没有办法避免这种行为?
当前回答
<form ... action="http:/www.blabla.com?a=1&b=2" method ="POST">
<input type="hidden" name="c" value="3" />
</form>
将请求方法改为' POST'而不是'GET'。
其他回答
我通常是这样写的:
foreach($_GET as $key=>$content){
echo "<input type='hidden' name='$key' value='$content'/>";
}
这是有效的,但是不要忘记清除您的输入以防止XSS攻击!
如果你需要变通,因为这个表单可以放在第三方系统中,你可以像这样使用Apache mod_rewrite:
RewriteRule ^dummy.link$ index.php?a=1&b=2 [QSA,L]
然后你的新表单将是这样的:
<form ... action="http:/www.blabla.com/dummy.link" method="GET">
<input type="hidden" name="c" value="3" />
</form>
Apache将附加第3个参数到查询
<form ... action="http:/www.blabla.com?a=1&b=2" method ="POST">
<input type="hidden" name="c" value="3" />
</form>
将请求方法改为' POST'而不是'GET'。
您应该包括两个项目(a和b)作为隐藏的输入元素以及C。
你的建筑是违法的。不能在表单的操作值中包含参数。如果您尝试这样做,结果将取决于浏览器的特性。如果它只适用于一种浏览器而不适用于另一种浏览器,我不会感到惊讶。即使它看起来可以工作,我也不会依赖它,因为浏览器的下一个版本可能会改变这种行为。
“但是假设我在查询字符串和隐藏输入中有参数,我能做什么?”你能做的就是修复错误。不是讽刺,但这有点像问,“但是假设我的URL使用百分号而不是斜杠,我能做什么?”唯一可能的答案是,您可以修复URL。