【问题标题】:Am I using $_POST['var'] correctly?我正确使用 $_POST['var'] 吗?
【发布时间】:2012-08-07 17:13:29
【问题描述】:

所以我正在使用 wordpress,但 wordpress 社区似乎对严格的 PHP 或任何可以在这种情况下提供帮助的东西知之甚少。

我有一个名为 Gravity Forms 的插件,我用它来创建一个非常精细的表单/调查。不过,这笔交易是一个多部分的表单,我不确定如何获取从第一个到第二个的所有表单数据。

我可以通过查询字符串传递数据,但我传递了 25 个信息字段,所以它不太适合我。

form1 提交后,是否可以将其重定向到第二页,其中包含一些代码,例如

$foo = $_POST['field_1_1']; 

field_1_1 是前一个表单中输入的名称?

我之前使用过 $_GET 查询字符串,但我不确定我刚才所说的示例是否是如何使用 $_POST

【问题讨论】:

  • “重定向”到页面,还是表单已经发布到“第 2 页”?
  • 您需要使用指定的方法提交表单来发布。但请始终注意:不要信任任何输入(并检查发布的值是否存在,否则您可能会收到一些警告)。
  • 这篇文章可能会有所启发:thinkvitamin.com/code/the-definitive-guide-to-get-vs-post

标签: php forms post


【解决方案1】:

您可以在 PHP 中使用 $_SESSION 变量,该变量在请求之间保留(最多可以配置您的 PHP 会话——通常是几个小时)

或者,您也可以(在网络使用方面效率低下)将旧表单数据输出到<input type="hidden"> 元素中。如果你打算这样做,我会考虑使用 serialize 函数

如果您在大规模生产环境中做某事,您可能还想研究 memcache 或 redis db

您可能希望考虑的其他事情是使用 JS 在客户端进行分页,以便在填写完所有页面后提交表单

【讨论】:

    【解决方案2】:

    是的,这是正确的用法。只需确保您的表单使用POST 方法提交即可。

    只需确保(就像使用 $_GET 一样)用户输入不可信。一定要清理它们以进行数据库交互。

    【讨论】:

      【解决方案3】:

      是的,像这样更改您的表单:

      <form method="post" action="page_to_post_to.php" name="form1" id="form1">
          ....
      </form>
      

      您将method 更改为post 并将action 更改为新页面。新页面是您可以从中访问$_POST 变量的页面。

      【讨论】:

        【解决方案4】:

        如果您打算使用单独的表单,也许您会发现使用 $_SESSION 超全局数组在会话中临时保存 $_POST 数据很有用。

        或者您可以使用 JavaScript 拆分长格式并将其发送一次到最终目的地。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-02-28
          • 2015-06-25
          • 2022-01-08
          • 2011-08-07
          • 2011-09-26
          • 2019-05-03
          • 2016-03-12
          相关资源
          最近更新 更多