序列化阵列&将结果放入隐藏文本字段?

时间:2015-11-18 19:27:16

标签: php serialization

我目前遇到一个令我困惑的问题。由于使用MVC框架,将缺少与HTML混合的PHP。

我得到了什么:

第1页上的表单A带有一个提交按钮,用于将用户输入从表单A引导到第2页,其中包含一大块文本供用户在继续之前阅读,隐藏文本字段将包含来自表单A的序列化数组和提交按钮继续验证用户输入。

我的表单根据需要指向正确的页面,post数组可以被seralized,前提是我没有把它放到文本字段中。表格A中的HTML如下:

<form action="/RegisterInformation" method="POST">
        <div class="row">
            <div class="large-12 columns">
                <input type="text" name="Username" placeholder="Username, ex: JohnDoe ">
            </div>
        </div>

        <div class="row">
            <div class="large-4 columns">
                <input type="password" name="Password" placeholder="Password">
            </div>
            <div class="large-4 columns">
                <input type="password" name="cpassword" placeholder="Confirm Password">
            </div>
            <div class="large-4 columns">
                <input type="text" name="email" placeholder="Email, ex: JohnDoe@provider.com">
            </div>
        </div>

        <div class="row">
            <div class="large-12 columns">
                <textarea name="Referral" placeholder="Where Did You Hear About Us?"></textarea>
            </div>
        </div>


        <div class="row">
            <div class="large-4 columns">
                <input type="submit" name="submit" value="Continue" class="button">
            </div>
        </div>

</form>

重定向到第2页:

    <div class="row">
        <div class=" large-12 columns">
            <p>
                <?php echo $data['PreregisterInformation']; ?>
            </p>
        </div>
    </div>


<div class="row">
    <div class="large-12 columns">
        <form action="/Continue" method="POST">
            <input type="text" name="SubmitInfo" value="<?php echo serialize($_POST); ?>">
            <input type="submit" name="submit" value="Continue"  class="button">
        </form>
    </div>
</div>

使用当前示例,我已将文本字段设置为可见,因此我可以看到正在发生的事情......但这是奇怪的地方。

我得到的是两种不同类型的结果。

第一个是当我在输入字段之外回显序列化数组时。我得到了预期的结果:

  

一个:6:{S:8: “用户名”,S:1: “S”; S:8: “密码”; S:1: “4”; S:9: “cpassword”; S: 1: “4”; S:5: “电子邮件”,S:3: “ASD”,S:8: “推荐”; S:3: “ASD”; S:6: “提交”; S:8: “继续”;}

第二种是当我使用以下内容时:

<input type="text" name="SubmitInfo" value="<?php echo serialize($_POST); ?>">

将无效的序列化数组传递给第3页,从而破坏了整个过程。

我认为这不是HTML相关的错误,而是序列化数组定义中的新换行符:6。我已尝试通过使用str_replace删除新的换行符来解决此问题:

$Ser = serialize($_POST);
$Ser = nl2br($Ser);
$Ser = str_replace("<br>","00",$Ser);
echo $Ser;

已证明不起作用。

1 个答案:

答案 0 :(得分:0)

这不是您问题的直接解决方案,但是您是否尝试json_encode或通过将日期存储到$_SESSION来避开隐藏字段?