session_destroy() 销毁当前会话中的全部数据, 但是不会重置当前会话所关联的全局变量, 也不会重置会话 cookie。 如果需要再次使用会话变量, 必须重新调用 session_start() 函数。为了彻底销毁会话,比如在用户退出登录的时候,必须同时重置会话 ID。 如果是通过 cookie 方式传送会话 ID 的,那么同时也需要 调用 setcookie() 函数来 删除客户端的会话 cookie。
1、session会判断当前是否有$_COOKIE[session_name()];session_name()返回保存session_id的COOKIE键值,这个值可以从php.ini找到。 如果不存在会生成一个session_id,然后把生成的session_id作为COOKIE的值传递到客户端.相当于执行了下面COOKIE
操作,注意的是,这一步执行了setcookie()操作,COOKIE是在header头中发送的,这之前是不能有输出的。PHP有另外一个函数
session_regenerate_id(), 如果使用这个函数,这之前也是不能有输出的。
setcookie(session_name(), session_id(), session.cookie_lifetime,//默认0
session.cookie_path,//默认'/'当前程序跟目录下都有效
session.cookie_domain,//默认为空
)
如果存在那么session_id =$_COOKIE[session_name()];然后去session.save_path指定的文件夹里去找名字为
2、比如新添加一个值$_session['test'] ='blah'; 那么这个$_session只会维护在内存中,当脚本执行结束的时候,把$_session的值写入到session_id指定的文件夹中,然后关闭相关资源.
3、SESSION发出去的COOKIE一般属于即时COOKIE,保存在内存中,当浏览器关闭后,才会过期,假如需要人为强制过期,比如 退出登录,而不是关闭浏览器,那么就需要在代码里销毁SESSION,方法有很多:
1]. setcookie(session_name(),session_id(),time() -8000000,..);//退出登录前执行
2]. usset($_SESSION);//这会删除所有的$_SESSION数据,刷新后,有COOKIE传过来,但是没有数据。
3]. session_destroy();//这个作用更彻底,删除$_SESSION 删除session文件,和session_id。
当不关闭浏览器的情况下,再次刷新,2和3都会有COOKIE传过来,但是找不到数据。
<?php
// 初始化会话
session_name('Session_test');
session_id('safdsadfasdfsadfasdf');
session_start();
$_SERVER['user'] = 'admin';
echo $_SERVER['user']."<br>";
echo $_COOKIE[session_name()];
//// 重置会话中的所有变量 -- 使用unset可以重置某个会话变量
// $_SESSION = array();
// // 同时删除会话 cookie
// if (ini_get("session.use_cookies"))
// {
// $params = session_get_cookie_params();
// setcookie(session_name(), '', time() - 42000,
// $params["path"], $params["domain"],
// $params["secure"], $params["httponly"]);
// }
// // 最后,销毁会话
// session_destroy();
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body>
</body>
</html>
版权声明:本文为博主郎涯工作室原创文章,未经博主允许不得转载。
以上就介绍了PHP Session管理,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号