在提交表单之前,使用jquery检查$ _POST数据
我有一个表单,用于将存储用户的First Name
发送到数据库中。 我正在检查用户使用php中的regex
发送的信息。 为了使我的项目更具交互性,我决定在将信息发送到PHP之前validation信息jQuery
。
我的项目看起来像这样:
$(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(); } }); });
现在我有两个问题:
- 在将数据存储到数据库之前,是否真的需要再次检查PHP中的
First Name
? (为了提高安全性) - 如何在
alert('Valid Name.');
后立即提交表格alert('Valid Name.');
?
感谢您提供帮助。
首先要记住的是,用户输入的validation仅在应用程序的服务器端实现! 您无法使用JS在客户端validation输入数据,因为它可以非常容易地传递(通过禁用javascript或使用像Curl这样的工具)。
但是,您可以在提交表单之前增加用户体验,例如validation输入,或者通知用户忘记填写输入。
要通知用户未填写输入,您可以使用上面required
的新html 5属性
Username:
除非已填写相关输入,否则required
属性不会让用户提交表单。
您还可以使用maxlength
属性来解决“密码必须有X个最大字母”这样的用例。
Password:
如何在服务器端validation输入
有很多技巧,您可以在Stackoverflow找到所有这些技术。 Ι将参考最受欢迎的post如何在PHP中阻止SQL注入? 这完全回答了你的问题。
只有两个子弹压缩上面的post,我建议你阅读
-
始终逃避您的数据
-
使用mysqli而不是mysql
如何在提醒后立即提交表格(“有效名称”。); ?
这很简单,只需使用此代码即可
上面的代码将使用POST
方法在action_page.php“发送”用户的进程输入,你可以使用$_POST
supergloba表来读取,如$firstname = $_POST['fistsname']
等。
试试这个
首先,您应该始终validation服务器端的表单提交,特别是如果您将这些值传递给DB-SQL注入,那么斗争是真实的。
至于表单提交流程,你可以……
return true
…在有效名称提醒和正常提交的表单之后。
由于您已经绑定了该提交事件,如果您通过ajax提交表单,并且在服务器validation失败时提供反馈,则对用户来说会更好。 因此,用户永远不会离开页面,您可以处理客户端和服务器validation。
看看ParsleyJS – http://parsleyjs.org/ – w00t!