首页 » PHP和MySQL Web开发(原书第4版) » PHP和MySQL Web开发(原书第4版)全文在线阅读

《PHP和MySQL Web开发(原书第4版)》23.4 创建一个简单的会话例子

关灯直达底部

上面的内容看起来可能还有些抽象,下面让我们来看一个例子。我们将实现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。