【问题标题】:POST value of checkbox sent with basic HTML form always returns 'on'使用基本 HTML 表单发送的复选框的 POST 值始终返回“on”
【发布时间】:2021-09-23 21:18:16
【问题描述】:

我需要实现一个非常基本的蜜罐隐藏复选框服务器端验证。这是我的 HTML 表单:

<form method="POST" action="handle-form.php">
    <input type="checkbox" id="validate_box" name="validate_box" style="display:none !important" tabindex="-1" autocomplete="off">
</form>

当我尝试在handle-form.php 中打印出$_POST['validate_box'] 时,它总是返回'on'isset($_POST['validate_box']) 也是如此,总是返回 true。复选框是否被选中并不重要。

我也尝试在复选框中添加自定义默认值并在 PHP 中进行比较,但结果相同。

这里有什么问题?

【问题讨论】:

  • 如何提交表单?
  • 复选框没有值,因此无法显示on。除非你有其他代码或者 JS 什么的。
  • @AbraCadaver developer.mozilla.org/en-US/docs/Web/HTML/Element/input/…:“如果省略了value属性,则复选框的默认值为on
  • @CBroe 注意。我不认为我自己没有指定一个值。

标签: php html forms post checkbox


【解决方案1】:

这应该是一个非常简单的修复:

将输入字段设置为 visibility:hidden 和/或 position:absolute。字段不会使用display:none 发送到服务器,但会使用visibility:hidden。通过将“位置”切换为“绝对”,您应该获得相同的视觉效果。

答案来自: https://stackoverflow.com/a/8318442/15594929

希望我能帮上忙。有一个美好的白天/夜晚(:

【讨论】:

  • 另外,将style="visibility: hidden" 放在表单元素中有点尖叫“我是一个蜜罐领域”。把它放在样式表中。
  • 不幸的是,这根本不起作用。我尝试过内联样式和外部样式表,但$_POST['validate_box'] 总是“开启”。
猜你喜欢
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
  • 2016-03-30
  • 2014-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-03
相关资源
最近更新 更多