PHP使用Session

我们先来看看在ASP使用Session:
<%
Session.Timeout = 20 '有效期20分钟
Response.Write(Session.SessionID + "<br/>")

Session("domain") = "mzwu.com"
Session("host_a") = "www.mzwu.com"
Session("host_b") = "bbs.mzwu.com"

Response.Write("------------------------------------------------<br/>")
if Session("domain")<>"" Then Response.Write(Session("domain") + "<br/>")
if Session("host_a")<>"" Then Response.Write(Session("host_a") + "<br/>")
if Session("host_b")<>"" Then Response.Write(Session("host_b") + "<br/>")

Session.Contents.Remove("domain") '删除Session变量

Response.Write("------------------------------------------------<br/>")
if Session("domain")<>"" Then Response.Write(Session("domain") + "<br/>")
if Session("host_a")<>"" Then Response.Write(Session("host_a") + "<br/>")
if Session("host_b")<>"" Then Response.Write(Session("host_b") + "<br/>")

Session.Contents.RemoveAll() '删除所有Session变量

Response.Write("------------------------------------------------<br/>")
if Session("domain")<>"" Then Response.Write(Session("domain") + "<br/>")
if Session("host_a")<>"" Then Response.Write(Session("host_a") + "<br/>")
if Session("host_b")<>"" Then Response.Write(Session("host_b") + "<br/>")

Session.Abandon() '彻底终结Session
%>

下边用PHP来实现上边的过程:
<?php
session_start();
ini_set("session.gc_maxlifetime", 1200); //有效期20分钟
echo session_id()."<br/>"; //SessionID

$_SESSION["domain"] = "mzwu.com";
$_SESSION["host_a"] = "www.mzwu.com";
$_SESSION["host_b"] = "bbs.mzwu.com";

echo "------------------------------------------------"."<br/>";
if(isset($_SESSION["domain"])) echo $_SESSION["domain"]."<br/>";
if(isset($_SESSION["host_a"])) echo $_SESSION["host_a"]."<br/>";
if(isset($_SESSION["host_b"])) echo $_SESSION["host_b"]."<br/>";

unset($_SESSION["domain"]); //删除Session变量

echo "------------------------------------------------"."<br/>";
if(isset($_SESSION["domain"])) echo $_SESSION["domain"]."<br/>";
if(isset($_SESSION["host_a"])) echo $_SESSION["host_a"]."<br/>";
if(isset($_SESSION["host_b"])) echo $_SESSION["host_b"]."<br/>";

session_unset(); //删除所有Session变量

echo "------------------------------------------------"."<br/>";
if(isset($_SESSION["domain"])) echo $_SESSION["domain"]."<br/>";
if(isset($_SESSION["host_a"])) echo $_SESSION["host_a"]."<br/>";
if(isset($_SESSION["host_b"])) echo $_SESSION["host_b"]."<br/>";

session_destroy(); //彻底终结Session
?>


比较两个例子可以看出,PHP在使用Session上和ASP基本是差不多的。但在写这个例子的时候我有些搞不清session_unset和session_destroy的区别了,把上边例子中session_unset替换成session_destroy后,下边仍可输出Session的值,都彻底终结了怎么会还有值?后来在网上查到了它们的区别:

引用内容 引用内容
session_unset()
释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的session id。

session_destroy()
删除当前用户对应的session文件以及释放session id,内存中的$_SESSION变量内容依然保留。

其实ASP中Session.Contents.RemoveAll和Session.Abandon的区别,大概也就是这样子了。

评论: 0 | 引用: 0 | 查看次数: 4325
发表评论
登录后再发表评论!