使用jQuery/PHP将数据输出到浏览器的多部分表单.如何显示输入数据

Multipart form with data output to browser in jQuery/PHP. How to show input data?

本文关键字:数据 何显示 表单 输入 显示 PHP jQuery 输出 使用 浏览器 多部      更新时间:2023-09-26

我正在尝试创建一个3步的表单:

  1. 填写表格
  2. 检查数据是否正确(显示输入)

根据这里一些人的建议(关于我之前的问题),我已经改变了我的方式,从主要是PHP + js验证到主要是js + PHP处理数据。

我现在需要一个关于如何处理这件事的建议。

以前我有一个PHP if/else来确定要显示哪一步,并在$_SESSION中保存第二步的数据,并在第一步中保留可能的更正。

现在我想知道我是否真的需要两个ajax调用(首先处理数据,以显示它-第二步使用$_SESSION在第一步显示数据输入;第二步:用给定的数据生成电子邮件和pdf文件(与步骤2相同的$_SESSION)。

也许一个好的解决方案是将数据与javascript放在第二步,并且只在最后的处理和生成中使用$_SESSION。

解决这个问题的一般方法是什么?

正常流程如下:

用户加载带有表单的页面。填好它。提交。

你可以在他们填写时验证每个字段(从用户的角度来看即时反馈很好)或使用onSubmit事件(在jquery $('#formID').submit中)进行验证。如果没有通过,你不允许他们提交,从submit函数返回false。

如果他们没有启用JS(你可以尝试阻止他们使用它w/o JS,但在现实中,他们可以只是使用curl -d "value1=foo&value2=foo2&value3=foo3" http://example.org/page/来绕过你),你必须验证服务器上的数据。JS是不够的

如果它没有通过服务器验证,您可以使用Location: http://example.org头将它们重定向到表单,或者在服务器端代码中再次回显表单。如果它确实通过了,你可以使用它(将它插入数据库,回显它,电子邮件它,等等)。

将数据保存在数据库中,并将其添加到$_SESSION。你把他们刚刚输入的数据连同一个"下载PDF"或类似的按钮一起返回。

点击"下载PDF"。

您拥有创建和PDF所需的所有信息。您不需要验证任何内容,但需要使用$_SESSION信息来创建PDF。您应该测试$_SESSION,以确保它们有来自先前页面的有效输入,否则有人可以模仿页面上的帖子并生成PDF(尽管可能是空白的)。我通常避免使用$_SESSION中的数据作为状态信息之外的任何东西——我会在post数据(在擦洗之后)上写入db,但如果它在$_SESSION中,它通常只是告诉我他们是谁的东西,并存储有关配置的其他信息等。在您的情况下,我已经在第一步写入数据库,现在将使用$_SESSION中的一些ID来拉出该记录并创建PDF以发送它。

我认为你所有的验证都可以在第一步轻松完成,然后你根据第一步的有效性将第二步分离为交付。