【问题标题】:Persist $_POST data after a redirect重定向后保留 $_POST 数据
【发布时间】:2015-02-05 06:37:42
【问题描述】:

在重定向之前持久保存 $_POST 数据的最佳方式是什么?

想象一下这种情况:页面A有一个数据表单,然后我们点击提交按钮向同一个页面A发送$_POST请求。

如果显示有错误,在数据表单中再次加载数据会很有趣,防止用户将所有文本写两次

【问题讨论】:

  • 不知道我是否理解。好吧,您应该为每个数据字段设置如下内容: if(isset($_POST['some_field_id'])) echo $_POST['some_field_id'];否则回声'';
  • 您问题的哪一部分涉及重定向?
  • 如果我有一个无效值的数据字段,我需要重新加载这个数据字段。但是这个数据字段出现在最后一节中。示例:页面A(有数据字段)---重定向302 --->页面B(需要重新加载数据字段)
  • 对不起英语,我不是一个好的英语作家
  • 您可以将$_POST 数组存储在session 中,然后在另一个页面中读取它。但我不确定这是否安全。

标签: php post url-redirection


【解决方案1】:

也许有点晚了,但无论如何这里有一个方法。 (对于任何有相同问题的人)

假设你有一个页面,“form.php” 如果您将表单发布到页面本身:

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  // action of the form will be "/path/on_your/webserver/to/form.php"
  // so it will POST to itself
  <input name="field_1" type="text" placeholder="Enter Text">
  <input name="submit" type="submit" value="Submit">
</form>

现在,如果您单击提交,它将处理您文件中的任何 php 代码。 如果您希望在 POST 请求之后输入的 &lt;input name="field_1"&gt; 中的文本存在,您可以为 &lt;input&gt; 字段提供一个 value 属性,并让 PHP 像这样回显发布的值:

<input name="field_1" type="text" placeholder="Enter Text" 
value="<?php if isset($_POST) {echo $_POST['field_1'];}?>">

现在,当您在输入字段中输入文本并单击提交后,文本将出现在该字段中。

您可能已经有了这个或另一个解决方案。请注意,如果您使用此解决方案,$_SERVER['PHP_SELF'] 如果容易受到 url-injection 黑客攻击。在需要时注意并清理变量。

【讨论】:

    猜你喜欢
    • 2014-12-21
    • 1970-01-01
    • 2016-03-30
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多