0

我正在一个具有多种形式的网站上工作。所有这些形式都在一个 php 文件中。我只是包含文件以使用默认表单。提交默认表单后,它会转到文件中的下一个表单。事情是我需要将一些表格的数据传递给它之后的表格。我的问题是我可以将字段的值设置为全局变量,这样我就不必在隐藏字段中传递它或使用会话变量?

4

6 回答 6

1

,这是不可能的……您将不得不使用隐藏的 OR Session。

当页面发送到客户端时,所有 PHP 页面变量都已过期,您需要将数据保存在服务器或客户端上,如果您需要在前面的页面上使用

于 2012-10-23T12:53:23.447 回答
1

我不认为你有一个选择......会话将是最好的方法,它不必很麻烦你可以通过执行以下操作来保存整个 $_POST 数组:

$_SESSION['previousPost'] = $_POST;
于 2012-10-23T12:55:16.020 回答
1

你能举一个你试图传递的数据的例子吗?这最终取决于您希望数据保留多长时间。如果用户让会话过期,您将丢失该数据并且可能应该将其存储在隐藏字段中。否则,会话应该没问题。

$_SESSION['key'] = 'val';

于 2012-10-23T12:56:17.270 回答
1

首先,您在一次 php 中设置多个表单将成为未来维护的噩梦。但这不是你的问题......如果你要走这条路,你可以发布到包含表单的同一个脚本。每次连续提交时,您都会添加到全局 $_POST 变量。

诀窍是确保您在每次后续提交时继续传递前一个表单的数据。这意味着您可能必须为先前表单的数据维护隐藏字段——它不优雅,而且容易出现问题,例如,它是一个线性工作流(单向)。

您最好在会话中维护数据,或者在会话中维护序列化对象(使用适当的访问器)。如果您有一个数据库,您总是可以分步构建一条记录,在每次提交表单时填充一条记录的列。

于 2012-10-23T13:04:06.387 回答
0

是的,您可以在会话中设置它您可以像这样在会话中设置它:

$_SESSION[key]=value;
于 2012-10-23T12:54:30.877 回答
0

您最好考虑使用 MySQL 或其他数据库来存储这些值,然后在后续表单中根据需要从数据库中提取它们。根据一个大型 PHP 文件的结构,很可能需要刷新页面才能进入下一个表单,在这种情况下,如果您不需要 MySQL 数据库的数据持久性,我强烈建议创建一个会话,将第一个表单中的数据存储在会话中,将该会话带到下一个表单,并使用会话变量中的数据来访问您需要的值。

于 2012-10-23T12:56:12.487 回答