php中session_unset与session_destroy的用法与区别,做退出的执行顺序

区别:

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

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

因此,释放用户的session所有资源,需要顺序执行如下代码:

<?php
$_SESSION[‘user‘] = ‘user1′;
session_unset();
session_destroy();
?>

总结:

session_destroy是注销所有的session变量,并且结束session会话; 
session_unset()并不注销session变量,但把所有的session变量的值清空.

退出代码的操作:

public function loginOut() {

setcookie("$this->loginMarked", NULL, -3600, "/");

unset($_SESSION["$this->loginMarked"], $_COOKIE["$this->loginMarked"]);

if (isset($_SESSION[C(‘USER_AUTH_KEY‘)])) {

unset($_SESSION[C(‘USER_AUTH_KEY‘)]);

unset($_SESSION);

session_destroy();

}

$this->redirect("Index/index");

}

时间: 2024-12-27 17:14:20

php中session_unset与session_destroy的用法与区别,做退出的执行顺序的相关文章

【Java学习笔记之二十九】Java中的&quot;equals&quot;和&quot;==&quot;的用法及区别

Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 System.out.println(str1==str2); 4 System.out.println(str1.equals(str2)); 为什么第4行和第5行的输出结果不一

go中defer的理解--defer、return、返回值之间执行顺序

defer可以读取有名返回值 func c() (i int) { defer func() { i++ }() return 1 } 输出结果是2. 在开头的时候,我们知道defer是在return调用之后才执行的. 这里需要明确的是defer代码块的作用域仍然在函数之内,结合上面的函数也就是说,defer的作用域仍然在c函数之内.因此defer仍然可以读取c函数内的变量(如果无法读取函数内变量,那又如何进行变量清除呢....). 当执行return 1 之后,i的值就是1. 此时此刻,def

java中静态代码块,非静态代码块,构造函数执行顺序

关于静态代码块 静态代码块的写法: static { System.out.println("我是静态代码块"); } 静态代码块的特点: 1.执行优先级高于非静态的初始化块,它会在类初始化的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员. 2.随着类的加载而执行,而且只执行一次 先说一下类加载,一个程序要想运行,首先要把代码加载到内存中,然后才能去和CPU交流,这是冯诺依曼计算机规定的.Java也是一样,Java的.class字节码文件要想执行,首先也

php中get_cfg_var()和ini_get()的用法及区别

php里get_cfg_var()和ini_get()都是取得配置值的函数,当你需要获取php.ini里的某个选项的配置值时,这两个函数都都可以使用,得到的结果是一样的. 不过,get_cfg_var()和ini_get()也有一些区别,这便是本文要谈的内容. 在说这两个函数区别之前,我们先来了解一下它们的含义及用法. 有关ini_get()的用法,前面有一篇<php用ini_get获取php.ini里变量值的方法>,这里不再累赘. 下面主要说说get_cfg_var()函数. get_cfg

jQuery中delegate与on的用法与区别

在jQuery1.7中 .delegate()已被.on()取代.对于早期版本,它仍然使用事件委托的最有效手段. 在事件绑定和委派,delegate()和on在一般情况下,这两种方法是等效的. .delegate() 指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数. // jQuery 1.4.3+ $( elements ).delegate( selector, events, data, handler ); // jQuery 1.7+ $

C++ 中 auto 与 decltype 的用法与区别

最近在恶补 C++ 知识的时候,学习到了一些 C++11 标准的新特性,利用这些新特性,我们能够更快地提高编程效率,从而实现我们的目标,在此特意记下学习过程中所学习到的一些东西,方便日后的回顾和复习. auto 关键字 在我们日常编程的时候,我们常常需要把表达式的值赋给变量,需要在声明变量的时候,我们必须清楚的知道变量是属于什么类型的.然而往往有些时候,我们做到这一点并非易事.为了解决这个问题, C++11 新标准就引入了 auto 类型说明符,通过使用 auto 关键字,我们就能让编译器替我们

Vue中Computed和Watch的用法及区别

一. 计算属性(computed) 1.计算属性是为了模板中的表达式简洁,易维护,符合用于简单运算的设计初衷. 例如: <p id="app"> {{ myname.substring(0,1).toUpperCase() + myname.substring(1) }} </p> 运算过于复杂,冗长,且不好维护,因此我们对于复杂的运算应该 使用计算属性的方式去书写. 因此可改写为: <body> <div id="app"

matlab 中randn randi rand 的用法以及区别

1,rand 生成均匀分布的伪随机数.分布在(0~1)之间 主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数                      rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以 是'single'                     rand(RandStream,m,n)利用指定的RandStream(我理解为随机种子)生成伪 随机数 2,randn 生成标准正态分布的伪随机数(均值为0,方差为1)     主要语法:和上

python中yield与return的用法与区别

生成器:函数内带有yield关键字,那么,这个函数执行的结果就是生成器. 生成器,本质就是迭代器. return与,yield 1,return只能返回一次函数就彻底结束了.而yield能返回多次值. 2,yield把函数变成生成器---迭代器--->把iter,next方法给到函数了.为我们自己定义迭代器,提供了方便. 3,yield能保存函数在暂停,和继续下一次云形时的状态. 原文地址:https://www.cnblogs.com/catherine007/p/8309474.html