假设我有一个文本输入,我不想让它为空。我可以通过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 '';
}