检查前端和后端


Checking front and backend

假设我有一个文本输入,我不想让它为空。我可以通过Js检查它并告诉用户一条消息。

据我所知,这不是很安全,我们也应该检查后端。我的问题是,如果我通过PhP检查字段是否为空,我从PhP告诉用户的消息不会与Js的消息重叠吗?

不,它们不会相互重叠。你必须在后端验证它的原因是,如果你禁用JavaScript,这些前端验证将无法工作。

我将给你一个例子,使用jQuery验证插件。

假设我们有以下HTML:

<form id="myform">
    <input type="text" name="field1" />
    <input type="text" name="field2" />
    <input type="submit" />
    <?php $error ? $error : '' ?>
</form>

和下面的jQuery:

$(document).ready(function () {
    $('#myform').validate({ // initialize the plugin
        rules: {
            field1: {
                required: true,
                email: true
            },
            field2: {
                required: true,
                minlength: 5
            }
        }
    });
});

和以下PHP:

$field1 = $_POST['field1'];
$field2 = $_POST['field2'];
// Validate if fields are matching requirements
if (// Validation fails) 
{
    $error = 'Some fields are invalid';
}

这是一个非常糟糕的验证,但它是一个例子。

这样,如果JavaScript没有被执行,PHP将返回$error和错误消息。

如果你不知道$error ? $error : ''是什么意思,它相当于:

if ($error) {
    echo $error;
} else {
    echo '';
}