PHP:isset()不检测GET变量

时间:2014-04-19 13:38:39

标签: javascript php html forms web

我有一个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 ...它怎么可能? 感谢

3 个答案:

答案 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']))

http://it2.php.net/isset