2011-03-19 26 views
2

我有一种情况,在处理表单时,如果在会话变量中存在问题并显示错误消息,并且在标题重定向之后回显消失。要清除会话错误消息,我将其设置为空;但是,这样做会导致它不被回应。我的代码很长,但是这是一个演示行为的例子。如何使用PHP会话变量然后更改它?

整个文件:

<?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> 

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

+0

也许不相关,但是你是否在任何地方设置了'$ error_message'? – 2011-03-19 11:16:18

+0

您正在打印$ error_message - 但这个变量的值是从哪里得到的? – Andreas 2011-03-19 11:17:53

+0

非常感谢Felix Kling和andreas--你们都是对的,应该像现在一样。谢谢。 – matfr 2011-03-19 11:42:45

回答

3

我认为如果您在标题后退出yourscript,您的问题应该得到解决。使用这个:

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

+0

谢谢Nanne - 正是我需要的。 – matfr 2011-03-19 11:43:19

0

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

+0

谢谢安德烈,现在好了。 – matfr 2011-03-19 11:43:54