在_POST中找不到表单值

时间:2012-06-10 23:33:30

标签: php forms radio-button

我做了一个非常简单的表单,只是为了看看我在PHP中提交数据时是否做得对。它只包含三个单选按钮,没有别的。没错,我没有像我期望的那样得到$ _POST的价值。

表格:

<form name='testform' action='test.php' method='post'>
    <input type='radio' name='testbutton' value='larry' />
    <input type='radio' name='testbutton' value='curly' />
    <input type='radio' name='testbutton' value='moe' />
    <input type='submit' value='Submit'>
</form>

脚本test.php:

if($_POST['testbutton'] == 'larry') {
    echo "You picked Larry";
} elseif($_POST['testbutton'] == 'curly') {
    echo "You picked Curly";
} else {
    echo "You picked Moe";
}

代码没有返回错误,但是无论我选择什么按钮,我总是得到Moe,即使根本没有选择任何按钮。使用var_dump($ _ POST)什么都不给,空格。无论我选择什么,使用print_r($ _ POST)给1。我无法在这里找到我做错的事。

顺便说一下,我知道这段代码不是最优的,但我只是在这里测试一下。

3 个答案:

答案 0 :(得分:3)

你可能还有一些其他代码没有显示给我们,它为$ _POST变量赋值,覆盖它。

如果你制作一个全新的php文件,并输入你在这里发布的代码,它应该可以正常工作。

答案 1 :(得分:0)

我知道这是一个老帖子,但在调试神秘问题时,有时候另一个建议可能会帮助某人解决他们“缺乏POST”数据的谜团。

在我的情况下,我使用ajax提交表单。在javascript代码中:我已将“type:”设置为“GET”,然后继续编写代码来处理服务器端PHP脚本中的“$ _POST”数据。欺骗性地,请求的视图(如Chrom Developer工具中所示)具有正确的值,因此您可以确信值正在传输。但是,在进一步检查时,您会看到响应标题显示为“GET”。

肯定是哑巴错误。希望这有助于拯救其他人从类似的调试地狱。

答案 2 :(得分:-1)

  • 将“name”属性添加到input元素总是好的。
<input type="submit" name="MySubmit" value="Submit">
  • 当你没有选择任何东西时,你总是得到Moe。假设您没有显示整个代码,我可以告诉您:
if(isset($_POST['MySubmit'])) {

    $selected = $_POST['testbutton'];

    switch($selected){

        'larry': echo "You picked Larry";

                 break;

        'curly': echo "You picked Curly";

                 break;

         default: "You picked Moe";

                  break;

    }

}

else {

    echo "Form submit failed";

}