Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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提交表单_Php_Validation_Forms - Fatal编程技术网

检测是否已使用PHP提交表单

检测是否已使用PHP提交表单,php,validation,forms,Php,Validation,Forms,我正在寻找一种用PHP处理表单的干净方法,它可以验证和缓存数据,但不需要将PHP与表单HTML混合使用。基本上,我希望能够用纯HTML编写一个表单,并在表单到达目的地的过程中截取该表单,对其进行处理,或者让数据愉快地运行,或者返回表单发送验证错误和缓存结果 这些都是我正在开发的一个小框架的一部分,作为学习的辅助工具。我最初的计划是使用路由对象嗅出GET和POST数据,但这些数据并不总是表示表单的存在 我一直在看,但没有看到任何有用的东西。虽然我以前从来没有费心看HTTP头,所以我可能很容易漏掉一

我正在寻找一种用PHP处理表单的干净方法,它可以验证和缓存数据,但不需要将PHP与表单HTML混合使用。基本上,我希望能够用纯HTML编写一个表单,并在表单到达目的地的过程中截取该表单,对其进行处理,或者让数据愉快地运行,或者返回表单发送验证错误和缓存结果

这些都是我正在开发的一个小框架的一部分,作为学习的辅助工具。我最初的计划是使用路由对象嗅出GET和POST数据,但这些数据并不总是表示表单的存在

我一直在看,但没有看到任何有用的东西。虽然我以前从来没有费心看HTTP头,所以我可能很容易漏掉一些东西


或者是否有其他可靠的方法来检测表单提交?

您几乎有两种选择:

  • 使用ajax
  • 提交到middleman.php并重定向到流程的第2步,或返回表单
  • 我建议使用ajax来避免不必要的页面加载。你可以这样做:

    (假设在这里使用jQuery,因为我知道它)

    然后您的middleman.php将对正确提交的表单回显1,或对不正确的表单回显其他任何内容


    此外,此javascript会通知用户错误。您还可以针对表单中不正确的特定部分回显特定的错误消息。(这还假设您有一个div“notificiatorea”可以保存noficiation)

    在获取请求时,没有通用的方法来区分表单提交和简单链接

    对于纯HTML,只有表单才能生成POST请求,所以按请求过滤方法可能是一个可行的解决方案。(然而,这显然不会捕获GET请求,AJAX也可以生成POST请求,所以…)

    如果您控制表单,我建议添加如下内容

    <input type="hidden" name="this_is_a_form" />
    
    
    

    每一种形式。(为了获得额外的积分,您可以截取表单HTML并动态添加上面的行。)

    我鼓励您了解现有框架是如何完成数据验证的。我使用,它们完全按照您所描述的(截取用户输入并在处理之前验证)做得很好。以下是描述其表单处理流程的教程:。Form_Validate正是您描述的阶段

    旁注:出于安全/数据完整性的考虑,在服务器端进行数据验证非常重要。如果需要,可以在上面添加客户端(javascript)验证,以改善用户体验。但是您还必须进行服务器端验证

    您可以通过以下方式进行检查:

    if(!empty($_POST) && isset($_POST['submit']))
    

    其中“提交”是提交按钮的名称…

    这种方法如何解释返回验证错误和重新填充表单?有两种方法。首先,有一个logger类,每个视图都包含一个实例。每个视图所做的第一件事就是显示任何用户反馈。其次,有一些核心js函数,每个布局自动加载。其中一个函数将恢复缓存的值,并将错误类添加到错误字段中。我的目标是在没有任何现成Javascript的情况下工作(虽然我将在返回过程中使用jQuery获得一些额外的好处,但它将在没有Javascript的情况下工作)。此外,Ajax解决方案不会使数据安全地插入数据库。其次,我真的希望通过让表单的action属性精确地指向它要去的地方来保持表单的纯洁性。hmmm,当我检索HTML以包含在视图中时,我可以这样做。我想知道开销是多少。
    if(!empty($_POST) && isset($_POST['submit']))