php5 的 session 详解之二:有两种方法传递 一个会话 ID:

cookie
URL 参数
会话模块支持这两种方法。cookie 更优化,但由于不总是可用,也提供替代的方法。第二种方法直接将会话 ID 嵌入到 URL 中间去。PHP 可以透明地转换连接。除非是使用 PHP 4.2 或更低版本,需要手工在编译PHP 时激活。在 Unix 下,用 --enable-trans-sid 配置选项。如果此配置选项和运行时选项 session.use_trans_sid 都被激活(修改 php.ini),相对 URI 将被自动修改为包含会话 ID。
● session_id
session_id() 用于设定或取得当前session_id 。php5中既可以使用session_id(),也可以通过附加在url上的SID取得当前会话的session_id和session_name。如果session_id()有具体指定值的话,将取代当前的 session_id 值。使用该函数前必须启动会话:session_start();当我们使用session cookies时,如果指定了一个 session_id()值,每次启动 session_start()都会往客户端发送一个 cookie 值。不论当前 session_id是否与指定值相等。session_id()如果没有指定值,则返回当前 session_id();当前会话没有启动的话,则返回空字符串。
● 检查 session 是否存在?
在以往的 php 版本中通常使用 session_is_register()检查 session 是否存在 , 如 果 您 使 用 $_SESSION[ ‘ XXX ’ ]=XXX 来 注 册 会 话 变 量 , 则session_is_register()函数不再起作用。你可以使用isset($_SESSION[‘xxx’])来替代。
● 更改 session_id
session_regenerate_id() 更改成功则返回 true,失败则返回 false。使用该函数可以为当前 session 更改 session_id,但不改变当前 session 的其他信息。例如:
<?php
session_start();
$old_sessionid = session_id();
session_regenerate_id();
$new_sessionid = session_id();
echo "原始 SessionID: $old_sessionid<br />";
echo "新的 SessionID: $new_sessionid<br />";
echo"<pre>";
print_r($_SESSION);
echo"</pre>";
?>
● session_name() 返回当前 session 的 name 或改变当前 session 的 name。如果要改变当前 session 的 name,必须在 session_start() 之前调用该函数。注意:session_name 不能只由数字组成,它至少包含一个字母。否则会在每时每刻都生成一个新的 session id.session 改名示例:
<?php
$previous_name = session_name("WebsiteID");echo "新的 session 名为: $previous_name<br />";
?>
● 如何删除 session?
1、unset ($_SESSION['xxx'])删除单个session,unset($_SESSION['xxx']) 用来unregister一个已注册的session变量。其作用和session_unregister()相同。session_unregister()在PHP5中不再使用,可将之打入冷宫。unset($_SESSION)此函数千万不可使用,它会将全局变量$_SESSION销毁,而且还没有可行的办法将其恢复.用户也不再可以注册$_SESSION 变量。
2、$_SESSION=array()删除多个 session

3、session_destroy()结束当前的会话,并清空会话中的所有资源。该函数不会unset(释放)和当前session相关的全局变量(globalvariables),也不会删除客户端的session cookie.PHP 默认的session是基于cookie的,如果要删除cookie的话,必须借助setcookie()函数。

返回值:布尔值。

功能说明:这个函数结束当前的 session,此函数没有参数,且返回值均为true
session_unset() 如果使用了$_SESSION,则该函数不再起作用。由于PHP5必定要使用$_SESSION,所以此函数可以打入冷宫了。
下面是 PHP 官方关于删除 session 的案例:
<?php
// 初始化 session.
session_start();
/*** 删除所 有的 session 变量 ..也可用 unset($_SESSION[xxx])逐个删 除。
****/
$_SESSION = array();
/***删除 sessin id.由于 session 默认是基于 cookie 的,所以使用 setcookie删除包含 session id 的 cookie.***/
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
// 最后彻底销毁 session.
session_destroy();
?>
由此我们可以得出删除 Session 的步骤:
1session_start()
2$_SESSION=array()/unset($_SESSION['xxx'])
3session_destroy()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值