使用php header()时丢失数据

时间:2014-08-08 16:00:36

标签: php session

我的程序基本上是一个表单。用户按下提交按钮后,程序会输入错误检查(因此我无法使用表单中的action元素来调用新程序)。错误检查后,我使用header("Location: url")调用另一个程序。

问题是我丢失了所有会话数据。我将session_start()作为两个程序中的第一行,我使用$_SESSION['variable name']命名一些变量。我的表单使用POST方法。

我的POST变量在用户按下提交后存在,但在header()调用后也会丢失 - 以及我的$_SESSION['']变量。我的session_id对于两个程序都是相同的。我在session_write_close()声明之前尝试header() - 仍然丢失了数据。

如何保存我的可变数据?

2 个答案:

答案 0 :(得分:1)

在使用标题之前,请将$ _POST的内容存入$ _SESSION变量。 如果您从第1页开始,则不会保存$ _POST变量 - > 2 - > 3,它们从第1页发送到第2页,就是它。

或第二个选项:当您执行标题时,您可以将帖子的内容放入网址中,以执行以下操作:

header("Location: http://www.example.com/index.php?name=".$_POST['name']);

当您登陆页面后的标题后,您可以使用:

$name = $_GET['name'];

你会得到这个名字。

编辑:修复我的英语:)

答案 1 :(得分:0)

当您分配这些会话变量时...尝试在没有标题的同一页面上回显它们并看到它们被正确分配。

并确保在标题调用后立即使用exit()。如果不这样做,它会在重定向后仍然运行脚本的其余部分。它可能正在重置会话变量,因为$ _POST将为空。

让我知道它是否有效