我有一个html表单(method =“get”,action =“cart.php”),其中我使用两个按钮发送相同的表单。
echo '<input type="image" src="data/images/back.png" height="40px" id="back" name="back">';
echo '<input type="image" src="data/images/continue.png" height="40px" id="go" name="go">';
现在,在PHP方面,我想检查点击了哪一个按钮(“go”按钮或“后退”按钮)。
我做完了:
if(isset($_GET['go.x']) == true)
{
echo 'form submitted using button GO';
}
else
{
echo 'form submitted using button BACK';
}
我使用'go.x'变量名称,因为表单传递了一个“go.x”和“go.y”变量(用户单击的图像按钮内的x,y位置)
但是,isset()函数总是返回false ...它怎么可能? 感谢
答案 0 :(得分:3)
来自the manual:
因为foo.x和foo.y会在PHP中生成无效的变量名,所以 自动转换为foo_x和foo_y。也就是说,期间 用下划线代替。所以,你可以访问这些变量 关于从中检索变量的部分中描述的任何其他内容 外部来源。例如,$ _GET ['foo_x']。
有open issue raised against this replacement of periods with underscores in PHP表示该行为旨在在register_globals
开启时将提交的变量名称转换为有效的全局名称。
现在已经删除了已弃用的register_globals
,看起来行为有可能会改变为您一直期待的行为。
答案 1 :(得分:1)
我在尝试时回答了我自己的问题:
if(isset($_GET[go_x] == true))
{
}
它有效。现在我的新问题是:为什么在世界上PHP将我的go.x GET变量转换为go_x ???
答案 2 :(得分:0)
你在javascript中详细说明了名为“go”的对象,但是php并不了解变量x的推断(“go.x”),我建议在javascript之前详细说明并且设置输入类型“隐藏“将数据发送到php页面,以便进一步详细说明。
PS。
if(isset($ _ GET ['go.x'])== true)
它等于说
如果(isset($ _ GET [ 'go.x']))