你如何使用PHP会话变量然后更改它?

时间:2011-03-19 11:12:25

标签: php session-variables

我有一种处理表单的情况,如果在会话变量中存在问题和错误消息,然后在标题重定向之后回显。要清除会话错误消息,我将其设置为null;然而,这样做会导致它根本不被回应。我的代码很长,但这是一个演示行为的例子。

整个文件:

<?php
session_start();

if($_REQUEST['set_session'] == 'true')
{

    $_SESSION['error_message'] = '<p>Should be this.</p>';

    header('Location: session_test.php');
}
?>
<html>
<head>
</head>
<body>

<?
echo $_SESSION['error_message'];

$_SESSION['error_message'] = '<p>Should not be this.</p>';

?>

<p><a href="session_test.php?set_session=true">Test</a></p>
</body>

有人可以解释为什么我会“不应该这样”而不是“应该是这个”吗?我怎么可能得到我想要的结果。

2 个答案:

答案 0 :(得分:3)

我认为如果你在标题之后退出你的脚本,你的问题应该得到解决。使用此:

header('Location: session_test.php');
exit();

即使浏览器转到另一页,脚本也会在调用标题后继续运行。因此,虽然未显示此页面中的回显,但仍会更改错误消息。

答案 1 :(得分:0)

header重定向后,您必须exit,否则脚本会继续执行。