首页 文章

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

提问于
浏览
0

我提出了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

    这正是sessions的用途 .

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

  • 0

    你必须继续传递所有信息 . 有几种方法可以做到这一点 .

    简单的方法是在第二种形式中创建 <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 .


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

相关问题