不使用输入标记传递表单值

时间:2014-02-26 03:03:05

标签: php forms codeigniter

我提出了2个观点,他们都有表格。第一个是基本细节,然后添加一个带有数值的文本框。

例如说: 姓: 成员:

提交按钮:继续

然后,我将其(作为$data=array('name'=>$_POST['familyname'],'members'=>$_POST['family_members']);传递给控制器​​,然后传递给新视图。

然后我在这里循环,

for($counter=1;$counter<$members+1;$counter++)
{
echo "<input type='text' name='membername$counter'/>";
}

所以之后又将它再次传递给另一个控制器功能。 但接下来我的问题是,我如何将$ name和$members值与第二种形式的新值一起传递。

不使用隐藏的输入类型并将其存储为值

2 个答案:

答案 0 :(得分:0)

这正是sessions的用途。

  

会话是针对单个会话ID为各个用户存储数据的简单方法。这可用于在页面请求之间保留状态信息。会话ID通常通过会话cookie发送到浏览器,ID用于检索现有会话数据。

答案 1 :(得分:0)

你必须继续传递所有信息。有几种方法可以做到。

easy 方法是在第二个表单中创建一个<input type="hidden">字段,其中包含序列化第一个表单的所有信息。

类似的东西:

$first_form_data = $_POST["..."];
echo '<input type="hidden" name="first_form_data"
  value="' . htmlspecialchars(json_encode($first_form_data)) . '" />';

我使用json_encode作为序列化程序。您还可以使用serialize或适用于此格式的任何序列化程序。

要对数据进行反序列化,请分别使用json_decodeunserialize


更复杂且更复杂的解决方案是将数据存储在别处并通过某种令牌引用它,并仅传递令牌。如果数据集太大而您不想随时传递它,这将非常有用。