Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在页面之间维护/重新提交POST变量的最合理机制是什么?_Php_Http Post_Session Variables_Form Submit - Fatal编程技术网

Php 在页面之间维护/重新提交POST变量的最合理机制是什么?

Php 在页面之间维护/重新提交POST变量的最合理机制是什么?,php,http-post,session-variables,form-submit,Php,Http Post,Session Variables,Form Submit,这可能是一个愚蠢的问题,但我正在寻找维护和“重新提交”POST变量的最合理机制。基本上,工作流程如下所示: 步骤1)选择要支付的费用,然后输入支付信息 步骤2)显示确认/汇总页面,选择“继续付款”或“编辑信息” 步骤3)返回“编辑”表单或发送要处理的数据 我目前正在为所有操作使用一个页面(仅一个基于“操作”变量的巨大开关)并提交信息。我遇到的问题是,在“确认页面”和任一选项之间,我正在丢失我的帖子数据(我理解)。我现在需要的是一种在不复制每个开关部分中的输入字段的情况下保存数据的方法。下面是我考

这可能是一个愚蠢的问题,但我正在寻找维护和“重新提交”POST变量的最合理机制。基本上,工作流程如下所示:

步骤1)选择要支付的费用,然后输入支付信息

步骤2)显示确认/汇总页面,选择“继续付款”或“编辑信息”

步骤3)返回“编辑”表单或发送要处理的数据

我目前正在为所有操作使用一个页面(仅一个基于“操作”变量的巨大开关)并提交信息。我遇到的问题是,在“确认页面”和任一选项之间,我正在丢失我的帖子数据(我理解)。我现在需要的是一种在不复制每个开关部分中的输入字段的情况下保存数据的方法。下面是我考虑过的几个选择。请随意评论每种方法的优点或愚蠢之处:

1) 将其序列化为会话变量,然后取消序列化

2) 只需将其键入/赋值到会话数组中

3) 为显示的每个“表单”重新创建每个输入,并重新填充值

4) 将开关放在一个表单中,仅显示相关部分

5) 我会用Javascript(有点假提交技术)来处理这一切,但目前在初始表单和摘要之间存在处理,而Ajaxing将成为beast atm

经典输入->确认->流程的建议操作过程是什么?如果我错过了一些显而易见/简单的东西,那就太神奇了

仅供参考:目前正在使用PHP 5.1.6

最好的

编辑1 显然,需要为各种功能使用单独的页面。我不使用单独页面的唯一原因是,其他页面依赖于这一页面,管理层不允许此时完全中断。三年多前,它的建造质量很差,目前正在部分解决

此时,我正在使用:

 foreach($_POST as $key=>$value)
      <input type="hidden">.......
foreach($\u发布为$key=>$value)
.......
…以实现预期目标

  • 将其序列化为会话变量,然后取消序列化
  • 只需将其键入/赋值到会话数组中

    非常糟糕。单击“确认”应始终确认页面上显示的内容,而不是存储在某个服务器上的某个模糊会话中发生的内容(如果您有负载平衡的群集,则该服务器可能不是为上一个请求提供服务的服务器)

    有很多网站会尝试在你按下后退按钮并显示错误页面时进行检测,可能是因为相关原因

  • 为显示的每个“表单”重新创建每个输入,并重新填充值

    对于“返回编辑”页面,您仍然需要执行此操作

    确认页面上循环中的
    有什么困难

  • 将开关放在一个表单中,仅显示相关部分

    您的意思是将所有输入粘贴到确认页面的
    display:none
    ?那感觉也很难看


  • 首先,将其分成多个页面可能是一个好的解决方案,但我不知道您的具体需求

    1和2是坏主意。也就是说,我不知道序列化和非序列化会话变量会带来什么好处,而在会话中,简单的键值对无法获得这些变量。如果在负载平衡器后面运行多台服务器,会话管理会变得非常棘手

    听起来很奇怪。我不知道开关给了你什么。如果您必须使用条件逻辑向用户显示完全不同的功能,那么最好是在单独的页面上

    5个假提交?听起来像是胡扯。您的意思是将数据发送回服务器并返回相同的数据并显示确认div?为什么不直接使用Javascript并操作DOM呢?然而,这是个坏主意


    只需将参数重新发布到确认表单,并相应地填充确认字段。(标准过程)。我认为这就是3,但我建议你在每一步都使用不同的页面。只是让东西保持干净。

    我实际上最终使用了

    <?$forward_post_data = base64_encode(serialize($_POST));?>
    
    <input type="hidden" value="<?=$forward_post_data?>"/>
    
    
    
    你为什么要用一页纸来完成你提到的3个步骤?我想我应该给出一些历史。代码不是我的。这是一个近2000行的PHP脚本。原始脚本在每个“表单”上复制所有项目并将其隐藏。另外,其他几个页面称此页面为其他“包含”功能。这真是一团糟,但我目前受到管理的限制,不允许出现页面突破。这显然是不可取的,但它的情况-所以我做了最好的我所拥有的。不管怎么说,在修复了不相关的逻辑(页面减少到400行)之后,我陷入了这种情况。对不起。我去过那里。祝你好运#1&2)同意----------一点也不难,只是考虑到对一页完全任意的“限制”,尽量把它缩小#4) 是的,这正是我的意思。我也同意,只是把它扔出去------谢谢你。学习如何使用会话,伙计。