$_POST 在与表单相同的文档上

$_POST on the same document as the form

我在同一页面上遇到 html 表单和 PHP 的问题。这是我刚刚写的代码的一部分:

这是我要通过单击提交按钮将 ID 插入数组的表单。当我提交表单时,menge 的值始终为空。有人知道为什么会出现这个问题吗?

echo '<form name="aanzahl" method="POST" action="index.php?page=einzelansicht&id='.$a_id.'">';
echo '<input id="inputButton" type="text" name="menge" value="1" size="2" maxlength="2" disabled>';
echo '<input type="submit"  class ="warenkorbbtn" name="warenkorbbtn" value="In den Warenkorb">';
echo '</form>';

if(isset($_POST['warenkorbbtn'])){
    if (!isset($_SESSION['warenkorb'])){
        $_SESSION['warenkorb'] = array();
    }

    $_SESSION['warenkorb'][] = array('warenkorb_id'=>$a_id, 'menge'=>$_POST['menge']);
    echo "Artikel befindet sich nun im Warenkorb";
}

如果您将 disabled 属性设置为输入元素,则当您触发 "submit" 操作时不会发送该元素的值。 尝试删除 disabled 属性以获取字段值。

具有 disabled 属性的表单元素不会将其值与表单一起发送:

This Boolean attribute indicates that the form control is not available for interaction. In particular, the click event will not be dispatched on disabled controls. Also, a disabled control's value isn't submitted with the form.1

为了让值与表单一起发送但仍然阻止用户修改值,请使用属性 readonly(尽管没有什么可以阻止用户使用他们的 altering/removing 该属性浏览器控制台)。

<input id="inputButton" type="text" name="menge" value="1" size="2" maxlength="2" readonly />

如果您不关心用户甚至看到输入,您可以将输入类型设置为 隐藏(即(input type="hidden" />),尽管用户仍然可以使用他们的浏览器控制台更改值。

您可以看到 this phpfiddle 演示的只读 属性,其中 readonly 属性已在该输入上设置。

另请注意,input 元素没有允许的内容,因此是一个 [空元素],因此我在元素末尾添加了斜线以关闭它正确(即 <input..../>)。

In HTML, using a closing tag on an empty element is usually invalid. For example, is invalid HTML.2