Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP和JavaScript验证表单?_Php_Javascript_Validation_Forms - Fatal编程技术网

使用PHP和JavaScript验证表单?

使用PHP和JavaScript验证表单?,php,javascript,validation,forms,Php,Javascript,Validation,Forms,是否可以使用PHP和JavaScript验证表单?目前,我可以使用现有的表单来完成这两项工作,但只能单独完成 我的总体目标是: 使用JavaScript客户端验证表单,并立即向用户显示任何错误 如果JavaScript验证通过,将创建一个标志,然后可以开始PHP脚本 在执行JavaScript验证时,我在表单标记中使用以下代码: <form id="Enroll_Form" action="review.php" method="post" name="Enroll_Form" onsu

是否可以使用PHPJavaScript验证表单?目前,我可以使用现有的
表单
来完成这两项工作,但只能单独完成

我的总体目标是:

  • 使用JavaScript客户端验证表单,并立即向用户显示任何错误
  • 如果JavaScript验证通过,将创建一个标志,然后可以开始PHP脚本
  • 在执行JavaScript验证时,我在
    表单
    标记中使用以下代码:

    <form id="Enroll_Form"  action="review.php" method="post" name="Enroll_Form" onsubmit="return Enroll_Form_Validator(this)" language="javascript">
    
    
    

    如果我想处理PHP验证,我将被迫将操作重命名为
    PHP\u SELF
    文件(或与我使用的文件名相同),并删除“onsubmit”函数。

    如果在非(javascript)情况下,
    onsubmit
    操作返回
    false
    ,我真的不知道问题出在哪里经过验证的表单,如果启用了javascript,表单就不会被提交


    一旦表单被提交,php就可以做任何它想做的事情,验证、返回错误等等。

    我没有尝试过这个,但我只是一时兴起;表单中不需要
    language=“JavaScript”
    就可以使用
    onsumbit
    事件处理程序。如果该事件的计算结果为
    true
    ,则表单将正常提交(因此PHP将看到它并可以进行验证)


    很高兴看到您不依赖客户端验证。在浏览器中禁用JavaScript很简单。人们应该始终验证自己的输入。

    不要太依赖JS来完成这类工作。是的,您可以进行验证以防止用户出错,但有人可以轻松创建
    .html
    并执行此操作

    <form action="http://yoursite.com/review.php" method="post">
        <input type="submit">
    </form>
    
    
    

    并绕过任何JS验证。在PHP中进行验证,就像在没有任何JS验证时一样。

    更新了,以响应注释

    首先,javascript不能成为一个安全的验证器,原因很明显!它可以是一种显示警报和通知的奇特方式,但它只是一种糖

    真正的验证必须在PHP或其他服务器端语言中完成,也必须在数据库端通过检查和格式化值来完成

    这个简单的脚本只是演示如何构建一个智能验证器,当然也只是一个概念证明


    演示:


    然后,关于
    操作,您不需要在其中包含php页面的路径,但必须使用AJAX来制作文章,只需留下
    评论。php
    在哪里请参见下面的代码片段:

      // FIRST SNIPPET action="#"
               if ( error == false ) {
               //if all is ok give our form it's php
               $(this).attr('action','review.php');
               } else {
               // error  
               // place false here so the form don't submit if validation fail!
               return false;
             }
    
      // SECOND SNIPPET action="review.php"
    
              if ( error == true ) {
            // form submit only if validation pass
               return false;
               } 
    
      // THIRD SNIPPET action="#" AJAX
    
        if ( error == false ) {
               // success
               } else {
               // error  
    
             }
         // this false prevent the form submit in anycase, cause we use AJAX
         return false;
    

    为什么您认为表单操作必须是PHP_SELF(具有相同的文件名)?如果我希望PHP验证返回的结果显示在同一页面上,那么该操作必须是同一页面的(如果发现错误,则在提交后使用发布的数据进行填充)。我首选的方法是使用相同的PHP函数通过AJAX验证服务器端和客户端。只需在AJAX将请求的页面中包含验证函数,然后在服务器端处理表单时再次执行这些函数。@Byron,使用这种方法,您将失去客户端验证的一个关键好处:即时反馈。@nickf,也许只有我一个人,但我不得不做的大多数验证都涉及数据库查询,所以这似乎是一种非常自然的方法。它还可以防止其他项目人员学习JavaScript。我在这里说的是,JavaScript实际上正在运行,但如果我以这种方式使用它,PHP将不会运行。onsubmit函数重写表单字段中的“action”!JS允许您通过突出显示表单字段使其变得“漂亮”。在PHP中更难做到,我认为您展示的示例很有趣,但不确定它是否达到了我的目的。这里是否正在进行任何实际的JS验证,或者这都是服务器端验证?我不会说谎-我必须为这个站点完成的字段验证太多,而且不有趣。@J m 4这个表单只是检查表单字段是否为空。这里没有任何数据检查。使用PHP正则表达式或其他任何东西。弗雷登,你是对的,我已经删除了不推荐使用的语言。谢谢
      // FIRST SNIPPET action="#"
               if ( error == false ) {
               //if all is ok give our form it's php
               $(this).attr('action','review.php');
               } else {
               // error  
               // place false here so the form don't submit if validation fail!
               return false;
             }
    
      // SECOND SNIPPET action="review.php"
    
              if ( error == true ) {
            // form submit only if validation pass
               return false;
               } 
    
      // THIRD SNIPPET action="#" AJAX
    
        if ( error == false ) {
               // success
               } else {
               // error  
    
             }
         // this false prevent the form submit in anycase, cause we use AJAX
         return false;