【问题标题】:Dynamic Validation of a HTML Forms using PHP使用 PHP 动态验证 HTML 表单
【发布时间】:2011-08-24 19:07:39
【问题描述】:

我使用 HTML 和 PHP 设计了一个客户表单。但现在的问题是,要验证表单。我希望像 asp.net 页面那样进行验证:一旦文本框控件失去焦点,验证器就会显示状态。

在 php 中可以吗?

【问题讨论】:

    标签: php javascript html forms validation


    【解决方案1】:

    不,如果没有 Javascript 支持,这是不可能的,即使 ASP.NET 也使用 Javascript 来帮助验证表单中的输入字段。

    您正在查看 AJAX 解决方案,或 JS 验证客户端 + PHP 服务器端验证(总是需要进行客户端 + 服务器验证)。

    但是不,没有用于客户端验证的纯 PHP,PHP 是服务器端。

    【讨论】:

      【解决方案2】:

      当您说您希望“当文本框失去焦点时”发生验证时,这意味着您的意图是进行客户端验证。我非常不鼓励你这样做,因为客户端“任何东西”都不应该被信任。所有验证都应在服务器端完成。

      现在,您可能想使用一些 jquery 通过在浏览器中进行验证来增强表单的“用户体验”,但不要搞错,这只是为了展示。

      下面的代码应该会引导你走向正确的方向

      // $clean_post: Assumes you already sanitized for SQL injection attack vectors and
      // that you have already ensured proper character encoding.
      
      // Example is for a hypothetical first name
      if( empty( $clean_post[ 'first_name' ] ) )
      {
          // Do something to let the user know that first name is required
      }
      else
      {
          // They entered a first name, this is good. Now check for
          // invalid characters. We will allow A-Z , backtick, apostrophe, space and dash
          if( preg_match( "/[^a-zA-Z `'\-]/" , $clean_post[ 'first_name' ] ) )
          {
              // Do something because they have illegal characters.
          }
      
      }
      

      【讨论】:

        【解决方案3】:

        您需要使用 Javascript/JQuery 进行实时验证。如果您必须使用 PHP 来验证输入,您可以使用 AJAX 调用来验证输入并返回的 PHP 脚本。下面是类似于 AJAX 调用的样子,它从输入框中获取值并将其传递给 PHP 脚本。如果 PHP 脚本打印“通过”,则一切正常,但如果不是,则删除该值并提醒用户。

        $.ajax({
            type:'post',
            data:'value='+$('#inputFieldID').val();
            url:'path-to-validate-script.php',
            success:function(msg){
                if (msg != "passed") {
                    $('#inputFieldID').val('');
                    alert("Invalid Input!");
                }
            }
        });
        

        【讨论】:

        • 您的回答完全忽略了您不能仅依赖前端验证的事实。关闭 javascript,您的解决方案就变成了一堆无用的代码。是的,用于前端验证的 Javascript,但你只给出了一半的答案。
        【解决方案4】:

        这里是关于验证的事情:客户端验证看起来不错,并且可以非常快速地设置。这对用户来说更好,因为它可以“做更多”来指示问题(与没有 javascript 的 php 相比)

        但是,这是一个很大的问题,但并非万无一失。你关闭了 Javascript,你的验证就泡汤了。依赖任何 javascript 或 jQuery 对您的数据输入是不负责任的......因此,您将不得不依赖混合解决方案 - 前端和后端。并且不要忘记对数据进行清理......否则您最终会以 little Bobby Tables 作为您的网站用户之一。

        我的公司将表格作为其业务的核心部分。如果我要进行自定义验证,我会发疯并从屋顶上跳下来。我use this script 以节省时间....它快速、有效且万无一失,只需包含一两行代码和课堂上的几句话即可使其正常工作。同样,这只是双管齐下混合方法的前端部分。

        在后端,当您提交时,您只需让您的函数在验证失败时返回问题输入,并返回给 UI,以便它可以抛出警告。在我的应用程序中,我在最初隐藏的表单顶部有一个集中的“问题”警报区域,它从 PHP 捕获所有后端验证问题并将它们显示在一个位置。我认为,如果他们花时间覆盖我的前端验证,那么他们就应该经历一个巨大的错误消息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-10
          • 2016-08-03
          相关资源
          最近更新 更多