在提交表单之前,使用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(); } }); });

现在我有两个问题:

  1. 在将数据存储到数据库之前,是否真的需要再次检查PHP中的First Name ? (为了提高安全性)
  2. 如何在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!