上面的内容看起来可能还有些抽象,下面让我们来看一个例子。我们将实现3个页面。
在第1页里,我们启动了一个会话并注册了$_SESSION['sess_var']变量。代码如程序清单23-1所示。
程序清单23-1 pagel.php——启动一个会话并注册一个变量
<?php
session_start;
$_SESSION['sess_var']="Hello world!";
echo'The content of$_SESSION[/'sess_var/']is'
.$_SESSION['sess_var'].'<br/>';
?>
<a href="page2.php">Next page</a>
我们已经注册了该变量并设置了它的值。该脚本输出如图23-1所示。
图 23-1 pagel.php显示出的会话变量初始值在该页面上,该变量的最终值可以被后续页面使用。在该脚本末尾,会话变量被序列化了,或者说被冻结了,直到再次调用session_start函数后,该变量才会被载入。
因此,在接下来的脚本中,我们将调用session_start函数。该脚本如程序清单23-2所示。
程序清单23-2 page2.php——访问一个会话变量并注销它
<?php
session_start;
echo'The content of$_SESSION[/'sess_var/']is'
.$_SESSION['sess_var'].'<br/>';
unset($_SESSION['sess_var']);
?>
<a href="page3.php">Next page</a>
在调用session_start之后,可以获取$_SESSION['sess_var']变量和前面所存储的值,如图23-2所示。
图 23-2 会话变量的值已经通过会话ID传递到page2.php在使用了该变量之后,必须注销该变量。这样,会话仍然存在,但是变量$_SESSION['sess_var']不再是一个注册变量。
最后,我们将进入到page3.php页面,它也是本例最后一页。该脚本的代码如程序清单23-3所示。
程序清单23-3 page3.php——结束会话
<?php
session_start;
echo'The content of$_SESSION[/'sess_var/']is'
.$_SESSION['sess_var'].'<br/>';
session_destroy;
?>
可以从图23-3看出,我们将无法再访问$_SESSION['sess_var']变量值。
图 23-3 注销的变量不再有效在PHP 4.3以前的版本中,当尝试注销$HTTP_SESSION_VARS数组或$_SESSION数组中的变量时,可能会遇到一个问题。如果发现无法注销元素(也就是说,它们还是处于注册状态),可以使用session_unregister函数来清除这些变量。
通过调用session_destroy函数清除会话ID。