【问题标题】:$_POST on the same document as the form$_POST 在与表单相同的文档上
【发布时间】:2017-05-04 16:54:10
【问题描述】:

我在同一页面上遇到了 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";
}

【问题讨论】:

  • 一个问题是您在输入“menge”上已“禁用”...
  • 甚至在检查代码之前我希望你在页面顶部有 session_start()

标签: php html html-input forms http-post


【解决方案1】:

如果您将disabled 属性设置为输入元素,则在触发“提交”操作时不会发送该元素的值。 尝试去掉disabled属性获取字段值。

【讨论】:

    【解决方案2】:

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

    此布尔属性指示表单控件不可用于交互。特别是,click 事件不会在禁用的控件上调度。此外,禁用控件的值不会与表单一起提交。1

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

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

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

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

    还要注意 input 元素没有允许的内容,因此是一个 [空元素],所以我在元素的末尾添加了斜杠以正确关闭它(即 @987654328 @)。

    在 HTML 中,在空元素上使用结束标记通常是无效的。例如,是无效的 HTML。2

    【讨论】:

    • 谢谢你!现在它起作用了。但我希望这个领域是不可改变的。有没有办法仍然这样做?
    • 请参阅我的答案中关于readonly 属性的部分。
    • 感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 2019-07-08
    • 2014-08-09
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多