防止负数但接受小数? HTML [重复]

Posted

技术标签:

【中文标题】防止负数但接受小数? HTML [重复]【英文标题】:prevent negative numbers but accept decimals? HTML [duplicate] 【发布时间】:2018-10-02 07:57:59 【问题描述】:

有没有办法防止负数但接受小数?我正在使用 phphtml

<input type="number" min="0" id="Student" name="course[]" value="<?php  echo $_POST['course'][3]; ?>"/></p>

【问题讨论】:

您可以使用 javascript 强制提交任何 >=0 的数字,并使用 PHP 仔细检查数字是否 >=0 【参考方案1】:

您的代码理论上有效。它可以防止负数并接受小数。

我想你真正要问的是:Is there a float input type in HTML5?

最佳答案建议您写:

<input type="number" min="0" step="0.01" name="course[]">

最重要的不是客户端验证,而是服务器端验证。在接受此输入的 PHP 代码中,您必须验证输入是否有效,如下所示:

if(is_numeric($_POST['course'][3]) && floatval($_POST['course'][3]) >= 0) 
    // The rest of your code.

要对所有课程都这样做,您很可能会这样写:

foreach($_POST['course'] as $k => $v) 
    if(!(is_numeric($v) && floatval($v) >= 0)) 
        echo "Input needs to be a number.";
        break;
    
    // Process the course $_POST['course'][$k] here.

您必须检查它是否也是服务器端的数字的​​主要原因是对浏览器有一定了解的人只需打开浏览器控制台并编辑输入的属性即可删除类型="number",让他几乎可以向您发送任何文本。

有更多知识的人可以向您发送 cURL 请求。

【讨论】:

Yesssssss,问题已解决,谢谢 编辑了我的帖子以提供深入的解释。 @Bashayer Nouri,如果答案和你说的一样对你有帮助,请接受并投票。

以上是关于防止负数但接受小数? HTML [重复]的主要内容,如果未能解决你的问题,请参考以下文章

防止背景重复[重复]

如何防止 LibreOffice Calc 将 CSV 保存为 text/html?

js如何防止负数的产生?

如何防止整数值变为负数

人们注册时如何防止重复的用户名?

人们注册时如何防止重复的用户名?