get方法覆盖了我的url变量

时间:2013-11-16 16:27:22

标签: php

使用GET方法单击表单中的提交按钮后,新变量将覆盖旧变量:

提交前:

www.example.com/?a=product

a - 表示提交后的页面:

www.example.com/?brand=1&maxprice=200

因此重新加载页面的可变消失并将我重定向到主页,如果没有建立值,这是默认情况。

我在表单操作上尝试了几个选项,例如:

?a=product // lead me to the result I showed above
?a=product& // same result as above
a=product // leads to www.example.com/a=product... unknown page

3 个答案:

答案 0 :(得分:1)

我不确定你为什么要这样做,但你可以在表单中添加一个名为'a'并且值为$ _GET ['a']的隐藏输入元素,这样'a'就是用这样的形式发布:

<input type="hidden" name="a" value="<?=htmlspecialchars($_GET['a']);?>"/>

答案 1 :(得分:1)

如果你有PHP 5.4,请使用

$encoding="UTF-8"; // Or whatever encoding you are using
<input type="hidden" name="a" value="<?=htmlspecialchars($_GET['a'],ENT_XML1 | ENT_COMPAT,$encoding);?>"/>

否则只需使用没有ENT_XML1 |的htmlspecialchars ENT_COMPAT和“and。

上的str_replace
$encoding="UTF-8"; // Or whatever encoding you are using
$v=$_GET["a"];
$v=str_replace("\"","",$v);
$v=str_replace("\\","",$v);
$v=htmlspecialchars($v,ENT_QUOTES,$encding);
echo '<input type="hidden" name="a" value="' . $v . '"/>'

对于foreach循环,请查看其他答案。

答案 2 :(得分:0)

一个简单的解决方案是对表单使用POST方法,然后在表单提交的页面上使用$ _POST。你的$ _GET应该仍然有用。