【发布时间】:2016-11-13 07:12:02
【问题描述】:
我有一个表单将用户的First Name 发送到数据库中。我正在检查用户在 php 中使用 regex 发送的信息。
为了让我的项目更具交互性,我决定在将信息发送到 PHP 之前验证 jQuery。
我的项目如下所示:
<script type="text/javascript" src="jquery-2.2.3.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.1/jquery-ui.js" type="text/javascript"></script>
<body>
<form >
<div>
<label>First Name</label>
<input name="firstname" type="text">
</div>
<div>
<input type="submit">
</div>
</form>
</body>
</html>
<script>
$(document).ready(function() {
$("form").submit(function (e) {
var firstname = $(this).find('input[name="firstname"]').val();
var regex = /^[A-Za-z0-9 \-']+$/;//Only numbers, Letters, dashes, apostrophes and spaces are accepted
if(regex.test(firstname)){
alert('Valid Name.');
}else{
alert('Invalid Name.');
e.PreventDefault();
}
});
});
</script>
现在我有两个问题:
- 在将数据存储到数据库之前,是否真的需要再次检查PHP中的
First Name? (为了提高安全性) - 如何在
alert('Valid Name.');之后提交表单?
感谢您的帮助。
【问题讨论】:
-
在警报后使用
return true提交表单。我还会再次检查名字 -
请注意,因为这非常重要:客户端验证只是为了方便用户,绝不能依赖于确保服务器端数据有效!您可以通过简单地关闭 javascript 或使用 curl 等命令行工具提交到您的服务器来绕过所有验证。如果你只有客户端验证,那么你基本上没有验证。
-
在您的 from 中添加操作以提交。在您的脚本中返回 true。
-
表单将被提交,因为您在提交后正在检查验证
标签: javascript php jquery forms