Php HTML5<;输入>;type=number防止用户违反min="&引用;或max="&引用;价值

Php HTML5<;输入>;type=number防止用户违反min="&引用;或max="&引用;价值,php,html,Php,Html,首先,你可以手工输入一个不同的数字,然后你可以在特定的值上或下翻看。此外,您还可以检查元素并自行设置不同的最小值或最大值。我如何验证这一点?或者我应该在SQL上设置一个值为0或1的检查 这是我现在的代码: <form action="" method="post" class="-koowa-form"> <div> <div> <input type="text" name="naam" id="naa

首先,你可以手工输入一个不同的数字,然后你可以在特定的值上或下翻看。此外,您还可以检查元素并自行设置不同的最小值或最大值。我如何验证这一点?或者我应该在SQL上设置一个值为0或1的检查

这是我现在的代码:

<form action="" method="post" class="-koowa-form">
    <div>
        <div>
            <input  type="text" name="naam" id="naam" size="40" maxlength="255" value="<?= $test->naam; ?>" placeholder="<?= translate( 'naam' ); ?>" />
            <input  type="text" name="kleur" id="kleur" size="40" maxlength="255" value="<?= $test->kleur; ?>" placeholder="<?= translate( 'kleur' ); ?>" />
            <input  type="number" name="active" id="active" size="40" min="0" max="1" value="<?= $test->active; ?>" placeholder="<?= translate( 'active' ); ?>" />
        </div>
        <input type="color" name="kleurcode" value="<?= $test->kleurcode; ?>"  
    </div>
</form>


您只能在服务器端安全地检查这些东西。在客户端,一切都由客户端控制。HTML代码可以在客户端修改,javascript代码可以在客户端修改。
因此,您的服务器从客户端接收到的任何内容都无法保证!这是网络安全的第一课。必须使用服务器端语言(如
PHP
)在服务器端检查有效输入

前端只能让用户“轻松”输入有效数据。为此,发明了很多东西,如
min、max、type=“number”、required等,但这取决于浏览器实际实现和支持这些东西的程度。因此,是的,从前端跨浏览器的角度来看,要让它看起来不那么凌乱,我们还有很长的路要走

为了使其在“所有”浏览器中工作(我从不在“所有”浏览器中包括IE),您可以对输入使用各种javascript检查,以确保不违反
min
max

一个很好的方法是在html中使用
oninput=“validate()”
在输入上放置一个
oninput
侦听器。然后使用类似于
valBetween
(见下文)的函数设置新值

function validate() {
    this.value = valBetween(this.value, this.min, this.max);
}

function valBetween(v, min, max) {
    return (Math.min(max, Math.max(min, v)));
}

嗯,最安全的事情是在服务器端验证它,检查值是否在可接受的参数内,如果值在可接受的参数内,则继续,如果不在可接受的参数内,则抛出错误。很明显,这非常混乱,在前端很容易违反。向用户抛出一个他们可以直接填写的错误似乎很笨拙。你知道如何让它在前端正常工作吗?是的,我前一阵子就学到了这个教训,有人可以上传一些带有不同扩展名的文件作为照片,它完全破坏了网站,到处都是错误。但是我只是想让它在用户端变得整洁,你可以手工填写,然后违反最小/最大值,这很愚蠢…@StrahBehry我同意,但不幸的是,这些东西大部分依赖于浏览器的支持。您可以添加Javascript检查,以确保它们不违反您设置的最小-最大规则。@StrahBehry一个非常简单的js解决方案(但可以做得更优雅)是:@StrahBehry更新了我的答案,以提供更好的Javascript检查方法。(我没有测试它,所以让我知道如果它不工作)Nvm很可怕,现在放一个实际上很好的,不需要任何html输入表单本身。
function validate() {
    this.value = valBetween(this.value, this.min, this.max);
}

function valBetween(v, min, max) {
    return (Math.min(max, Math.max(min, v)));
}