我试图使用会话变量将错误消息传递到另一页。在处理程序页面上,以以下方式初始化会话:
function sess() {
$index = $_POST['name'];
$_SESSION['error'] = ($index == '') ? 'name cannot be empty' : $index . " is a good name";
header("Location: http://website-name.com/form");
}; sess();
在另一页上是这样的:
if(isset($_SESSION['error'])) {
echo $_SESSION['error']; unset($_SESSION['error']);
};
现在,如果表单提交的字段为空,则错误name cannot be empty
将成为会话的值。之后,如果设置了名称,则会话的值不会更改,但仍返回name cannot be empty
。
我检查了是否在函数中调用了会话这一事实。不知道!但在线发现了一种使用session_unset取消所有变量的方法。但这实际上是我要取消设置的一个会话变量,并且发现了类似session_unset($_SESSION['error'])
的内容。但是,使用它并不会取消所有会话的设置,但是在函数中不会$_SESSION['error']
进行设置,除非我使用unset($_SESSION['error'])
不会终止设置的第一个会话。
那么实际上出了什么问题? unset_session()
与unset()
有何不同?与函数内部有什么关系?据我所知,$_SESSION[]
是一个全局变量,就像$GLOBALS[]
一样,可以在任何范围内访问。