php变量持久化

时间:2010-04-22 16:08:34

标签: php session persistence

我有两个文件:

的index.php /lib/user.php

索引包含以下形式:

<div class="<? echo $msgclass; ?>">
  <? echo $msg; ?>
</div>
<form id="signin" action="/lib/user.php" method="post">
...
</form>

User.php进行所有处理。 它将$ msg设置为'some error message',并将$ msgalert设置为'error'以防出现任何错误。在处理结束时,它使用header()重定向到index.php

但重定向后,$ msg和$ msgalert不再持久,索引只获得空变量。 我该如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

编辑:抱歉误读了您的问题。您可以将这些值存储在会话中。

/lib/user.php

session_start();
$_SESSION['msg']      = $msg;
$_SESSION['msgalert'] = $msgalert;
index.php

中的

session_start();
$msg      = $_SESSION['msg'];
$msgalert = $_SESSION['msgalert'];

请注意session_start()使用标头,因此必须在发送任何输出之前将其放置。

答案 1 :(得分:0)

User.php和index.php是独立的执行,所以变量范围在这里没有多大意义。

您可以通过GET参数或会话变量传递这些值。

尝试使用GET参数重定向:

header('Location: http://www.example.com/index.php?msgalert=error&msg=some%20error%20message');

然后在index.php中使用:

$_GET['msgalert']
$_GET['msg']

访问您的数据。虽然如果可以的话,使用硬编码到脚本中的一些预定义错误消息会更好(仅传递错误代码)。

答案 2 :(得分:0)

网页是无国籍的。如果您想维护状态,请将所需值存储在$_SESSION变量中,或者将其传递给$_GET$_POST

答案 3 :(得分:0)

这不是范围问题,而是持久性问题。当您使用header ()重定向时,您要求浏览器获取完全不同的页面,该页面执行完全不同的脚本。

您需要通过数据库,会话,$ _GET变量等手动持久或传递数据。