php注销session变量和销毁session详细分析
当使用完一个session变量后,可以将其删除,当完成一个会话后,也可以将其销毁。如果用户想退出WEB系统,就需要为他提供一个注销的功能,把他的所有信息在服务器中销毁。销毁和当前session有关的所有的资料,可以调用session_destory函数结束当前的会话,并情况当前会话的所有资源。该函数的语法格式如下所示:
bool session_destory(void) //销毁当前session有关的所有资料。
相对于session_start()函数,该函数用来关闭session的运作,如果成功则返回true,销毁session资料失败则返回false。但该函数并不会释放当前session相关的变量。也不会删除保存在客户端cookie中的session id。因为$_SESSION数组和自定义的数组在使用上是相同的,所以我们可以使用unset()函数来释放在session中注册的单个变量。如下所以:
unset($_SESSION['username']); //删除在session中注册的用户名变量
unset($_SESSION['password']); //删除在session中注册的用户密码变量
/* http://www.manongjc.com/article/1286.html */
一定要注意,不要使用unset($_SESSION)删除整个$_SESSION数组,这样将不能再通过$_SESSION超全局数组注册变量了,那如果想要把某个用户在session中注册的所有变量都删除,该如何操作呢?我们可以将数组变量$_SESSION赋值一个空数组。如下所示:
$_SESSION=array(); //将某个用户在session中注册的变量全部删除。
php默认的session是基于cookie的,session id被服务器存储在客户端的cookie中,所以在注销session时也需要清除cookie中保存的session id,而完成这一项工作必须借助setCookie函数完成。在cookie中,保存session id的cookie标示名称就是session的名称,这个名称是在php.ini中通过session.name设置的,在php中,我们可以通过session_name()函数获取session名称。删除session id的代码如下:
<?php
if(isset($_COOKIE[session_name()])){ //判断cookie中是否保存session id
setcookie(session_name(),'',time()-3600); //删除包含session id的cookie
}
?>
总结:
php注销session变量和销毁session注意事项:
- session_destory()可以销毁session会话,但它不会释放session变量,我们需要使用unset函数释放session变量
- 使用unset函数释放所有session变量时,不能使用unset($_SESSION),而应该使用$_SESSION=array();
- 使用session_destory()销毁seesion会话时,我们还必须使用setcookie函数删除保存在客户端cookie里的session id
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- CentOS 8 安装 MariaDB的详细教程
- Android中RecyclerView拖拽、侧删功能的实现代码
- Android单个RecyclerView实现列表嵌套的效果
- Android如何禁止向EditText控件中输入内容详解
- 小程序视角下同构方案思考
- Android基于自带的DownloadManager实现下载功能示例
- Linux服务器搭建nvidia-docker环境过程详解
- Android开发中libs和jinLibs文件夹的作用详解
- Android多线程之同步锁的使用
- android.graphics.Matrix类用法分析
- 使用VSCode和SSH进行远程开发
- Android利用CountDownTimer实现倒计时功能 Android实现停留5s跳转到登录页面
- Android开发之对话框案例详解(五种对话框)
- Linux下一只五颜六色的「猫」
- Android编程实现自定义ImageView圆图功能的方法