我目前遇到一个令我困惑的问题。由于使用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;
已证明不起作用。
答案 0 :(得分:0)
这不是您问题的直接解决方案,但是您是否尝试json_encode
或通过将日期存储到$_SESSION
来避开隐藏字段?