精华内容
下载资源
问答
  • 如何删除 Session 会话数据

    千次阅读 2019-09-20 12:10:21
    当完成了一个用户的 session 会话数据,会有以下几种选择去删除session会话数据。 移除一个特定的属性:可以调用 public void removeAttribute(String name)这个 方法来删除与特定的键相关联的值。 删除整个 ...

    如何删除 Session 会话数据

    当完成了一个用户的 session 会话数据,会有以下几种选择去删除session会话数据。

    1. 移除一个特定的属性:可以调用 public void removeAttribute(String name)这个 方法来删除与特定的键相关联的值。
    2. 删除整个 session 会话:可以调用 public void invalidate() 这个方法来丢弃整个 session 会话。
    3. 设置 session 会话过期时间:可以调用 public void setMaxInactiveInterval(int interval) 方法来单独设置 session 会话超时。
    4. 注销用户:如果使用的是支持 servlet 2.4 的服务器,您可以调用 logout 来注销 Web 服务器的客户端,并把属于所有用户的所有 session 会话设置为无效。
    5. web.xml 配置:如果您使用的是 Tomcat,除了上述方法,您还可以在 web.xml 文件中配置 session 会话超时,在超时这一方面,和cookie又有些比较,可以参考文档
      https://blog.csdn.net/qq_36760873/article/details/100900830 ,详细了解一下session和cookie的区别。

    如下所示:

     <session-config>
        <session-timeout>15</session-timeout>
      </session-config>
    
    展开全文
  • 删除Session里面特定的值,解决Session删除值的困扰。
  • shiro中的会话停止与会话过期有什么区别?会话停止是否会删除session?
  • ci框架中添加Session数据、取Session数据、删除Session数据  Session 类  Session 类可以使用户在浏览您的网站时,维持他们的状态并跟踪他们的行为。 Session 类将每个用户的 session 信息序列化(serialize...
     ci框架中添加Session数据、取Session数据、删除Session数据

            Session 类

            Session 类可以使用户在浏览您的网站时,维持他们的状态并跟踪他们的行为。 Session 类将每个用户的 session 信息序列化(serialize)后存储到到 cookie 中(并同时进行加密)。 您还可以将 session 数据存储到数据库中来增强安全性,但是这时要求存储在用户 cookie 中的 session ID 值能与数据库中存储的用户 session ID 值相匹配。程序默认只在 cookie 中存储 session。如果您要在数据库中存储 session 的话,需要按照下面指示的方法,在您的数据库中创建需要的数据表。

            注意:Session类并不使用PHP本身的session,而是使用类自己的session,这样做,可以给开发者提供更大的灵活性。

            注意:即使没有使用加密会话,你也需要在配置文件里设置一个加密密钥。这将有助于防止伪造 Session 数据。

            注意:Session类是依赖于加密类的,因此您的服务器上必须安装有Mcrypt扩展.

            初始化 Session

            Sessions会在每个页面载入后开始运行,所以session类必须首先被初始化。您可以在控制器中初始化,也可以在系统中自动加载(译者注:在 autoload.php设定)。session类的绝大部分都会在后台运行,所以初始化session时,它session数据会被自动读取、创建和更新。

            要在您的控制器构造函数中初始化session类,您可以使用 $this->load->library 函数:

            $this->load->library('session');

            一旦被载入, session就可以这样使用: $this->session

            Sessions 是怎样工作的?

            当页面载入后,session类就会检查用户的cookie中是否存在有效的session数据。如果session数据不存在(或者已经过期),那么就会创建一个新的session并把他保存在cookie中。如果session数据存在,那么他的信息就会被更新,同时cookie也会被同时更新。每次更新都会重新生成session_id的值。

            对于您来说,需要知道的非常重要的一点就是,session类一旦被初始化,它就会自动运行。对于后面的事情,您可以完全不作理会。正如您将会在下面看到的一样,您可以正常使用session来工作,甚至还可以添加自己的session数据,而在这一切的过程中,读、写和更新的操作都是自动完成的。

            Session 数据是什么?

            一个 session 是由一个包括下列信息的数组组成的:

                唯一的用户Session ID (这是一个平均信息量统计出来的非常坚固的随机字符串,使用MD5加密,默认是每五分钟就重新生成一次。
                用户的 IP 地址
                用户浏览器信息(取前120个字符)
                最新的一个活跃时间戳.

            以上数据将会用以下数组格式序列化并存到cookie里:

            [array]
            (
                 'session_id'    => random hash,
                 'ip_address'    => 'string - user IP address',
                 'user_agent'    => 'string - user agent data',
                 'last_activity' => timestamp
            )

            如果你将加密设置开启,serialized 的数组会先被加密,然后存入cookie中。这会让数据不容易被看到和修改,从而提高安全性。从这里可以找到更多关于加密的信息。Session类会自动负责初始化和数据加密。

            注意: 默认情况下, Session Cookie 每隔 5 分钟才会更新一次,这样会减少对处理器的负荷。如果你重复的装载页面, 你会发现"上次活动"的时间在五分钟,或多于五分钟的时候才会变化,也就是 cookie 上次被写入的时间。 这个时间可以通过设置 application/config/config.php 文件里的 $config['sess_time_to_update'] 行来改变。

            取得 Session 数据

            可以通过如下的函数来得到 session 数组的任何信息:
            $this->session->userdata('item');

            item 是数组里的相对应数据的索引。例如,想要获得 session ID, 你要使用如下的代码:
            $session_id = $this->session->userdata('session_id');

            注意: 如果你的目标数据不存在的话,这个函数会返回 FALSE (布尔值boolean)。

            添加自定义的 Session 数据

            session 数组的一个非常有用的用途是你可以向它里面添加你自己的数据,这些数据会被保存在用户的 cookie 中。这样做的原因是什么呢?看看这个例子:

            假设,有个特定用户登陆到你的网站, 当他通过检测后 你可以添加他的用户名和电子邮件到 session cookie 中,这些信息可以在不去访问数据库的情况下,当成全局量来使用。

            通过以下函数,你可以传递一个新的用户数组到 session 数组中:

            $this->session->set_userdata($array);

            $array 是一个结合数组,用来存储你的新数据。例如 :

            $newdata = array(
                               'username'  => 'johndoe',
                               'email'     => 'johndoe@some-site.com',
                               'logged_in' => TRUE
                           );

            $this->session->set_userdata($newdata);

            如果使用下面 set_userdata()函数的写法,可以每次只添加一个用户数据。

            $this->session->set_userdata('some_name', 'some_value');

            注意: Cookies 只能存储 4KB 的数据, 使用时要小心超出它的容量。特别指出的是,加密会产生比原数据更长的数据字符串,所以一定要当心你要存放数据的大小。

            取得所有 Session 数据

            用下面的这种方式可以得到一个所有Session用户数据的数组:
            $this->session->all_userdata()

            代码将返回一个类似这样的关联数组:

            Array
            (
                [session_id] => 4a5a5dca22728fb0a84364eeb405b601
                [ip_address] => 127.0.0.1
                [user_agent] => Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7;
                [last_activity] => 1303142623
            )

            删除 Session 数据

            正如使用 set_userdata() 是用来添加信息到 session 中,而通过向 unset_userdata() 函数中传递 session key 可以用来删除这些信息。例如, 你想要从 session 信息里去掉 'some_name':

            $this->session->unset_userdata('some_name');

            也可以给这个函数传一个要删除项的关联数组。

            $array_items = array('username' => '', 'email' => '');

            $this->session->unset_userdata($array_items);

            闪出数据

            CodeIgniter 支持 "闪出数据", 或者说Session数据只对下次服务器请求可用, 然后会自动清除。这应该会非常有用,往往应用在信息或状态提示中(例如:“记录2已删除”)。

            注意: 出数据变量名以“flash_”开头,所以在你自己的变量名中要避免使用这个前缀。

            要添加闪出数据:

            $this->session->set_flashdata('item', 'value');

            你也可以使用和 set_userdata() 同样的方式向 set_flashdata() 传递一个数组。

            要读取一个闪出数据变量:

            $this->session->flashdata('item');

            如果你发现你需要在一个附加的请求中保留一个闪出数据,你可以使用 keep_flashdata() 这个函数。

            $this->session->keep_flashdata('item');

            将 Session 数据存入数据库

            由于Session数据数组是附带一个Session ID保存在用户cookie里的,你无法验证它,除非你把session数据存储在数据库中。在一些不需要或很少需要安全保护的应用中,session ID 或许并不需要。但如果你的应用需要安全保护,验证是必须的。否则,用户可以通过篡改Cookies来恢复旧的Session。

            当session 数据在数据库中可用时,每当从用户cookie中发现一个有效的session,一个数据库查询就会被执行以匹配它。如果 session ID 不相配,session 就会被销毁。Session ID永远不会更新,它们只会在一个新的会话创建时生成。

            为了存储session,你必须先创建一个数据表。这是 session 类所需的基本结构(用于MySQL的):
            CREATE TABLE IF NOT EXISTS `ci_sessions` ( session_id varchar(40) DEFAULT '0' NOT NULL, ip_address varchar(45) DEFAULT '0' NOT NULL, user_agent varchar(120) NOT NULL, last_activity int(10) unsigned DEFAULT 0 NOT NULL, user_data text DEFAULT '' NOT NULL, PRIMARY KEY (session_id), KEY `last_activity_idx` (`last_activity`) );

            注意: 默认情况下这个表叫做 ci_sessions, 但是你可以给它指定任意名字,只要你更新了 application/config/config.php 文件以确保它包含了你所起的名字。 一旦你创建了数据表,你就可以像下面这样在config.php文件中启用数据库选项:

            $config['sess_use_database'] = TRUE;

            一旦启用了,Session类就会在数据库中存储session数据。

            同时确保你已经在配置文件中指定了数据表名:
            $config['sess_table_name'] = 'ci_sessions';

            注意: Session类已经内置了清除过期session的垃圾回收机制,因此你不需要编写你自己的事务来做这个。

            销毁 Session

            要清除当前 session:
            $this->session->sess_destroy();

            注意: 此函数应该是最后被调用的。即使闪出变量已不再有效。如果你只想让某几项而不是所有项被销毁,请使用 unset_userdata().

            Session 的参数

            你可以在application/config/config.php 文件中找到以下的 Session 相关的参数:

    参数默认选项描述
    sess_cookie_nameci_session你想要保存 Session Cookie 的名字。
    sess_expiration7200session 持续的秒数。默认是2个小时(7200秒)。如果将这个数值设为: 0,就可以得到 永久 session。
    sess_expire_on_closeFALSETRUE/FALSE (boolean)这个选项决定当浏览器窗口关闭时是否自动使session过期。
    sess_encrypt_cookieFALSETRUE/FALSE (布尔值boolean)是否对 session 数据加密.
    sess_use_databaseFALSETRUE/FALSE (布尔值boolean)是否将 session 数据存放入数据库中。在开启这个选项前,你要先创建一个数据库表。
    sess_table_nameci_sessions任何有效的 SQL 表名session 数据库表的名字。
    sess_time_to_update300时间以秒计算这个选项控制 session 类多久会产生一个新的session 和 session id。
    sess_match_ipFALSETRUE/FALSE (布尔值boolean)是否通过用户的IP地址来读取 session 的数据。 注意 ,有些网络运行商 ISPs 会动态的改变IP, 所以将这个选项设为 FALSE, 才有可能得到永久的 session。
    sess_match_useragentTRUETRUE/FALSE (布尔值boolean)是否要按照对应的 User Agent 来读取 session 数据。    

    展开全文
  • thinkphp框架v5.0,怎么在关闭浏览器即删除session或存有sessionid的cookie?
  • 根据sessionID来删除session

    千次阅读 2019-07-22 14:18:31
    在有些情况下可能需要根据sessionId来增删改session,这时候我们可以通过监听来实现。代码如下。 1、创建监听MySessionListener.java public class MySessionListener { public void sessionCreated...

    在有些情况下可能需要根据sessionId来增删改session,这时候我们可以通过监听来实现。代码如下。

    1、创建监听MySessionListener.java

    public class MySessionListener {
        public void sessionCreated(HttpSessionEvent httpSessionEvent) {
            MySessionContext.AddSession(httpSessionEvent.getSession());
        }
        public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
            HttpSession session = httpSessionEvent.getSession();
            MySessionContext.DelSession(session);
        }
    }


    2、创建MySessionContext.java

    public class MySessionContext {
        private static HashMap mymap = new HashMap();
            public static synchronized void AddSession(HttpSession session) {
                    if (session != null) {
                            mymap.put(session.getId(), session);
                         }
                 }
             public static synchronized void DelSession(HttpSession session) {
                     if (session != null) {
                             mymap.remove(session.getId());
                         }
                 }
             public static synchronized HttpSession getSession(String session_id) {
                    if (session_id == null)
                         return null;
                     return (HttpSession) mymap.get(session_id);
                 }
    }

    3、在web.xml中加入

    <listener>
        <listener-class>路径.MySessionListener</listener-class>
    </listener>

     

    这样就可以了

    HttpSession session = MySessionContext.getSession(sessionId);

     

    展开全文
  • oracle中查看session以及删除session

    千次阅读 2017-06-11 21:38:45
    1.登录到oracle系统用户 ...2,查看session有那些参数,其中最重要的是sid,serial#,username SQL> desc V$session 3.使用命令查看,sid,serial#,username SQL> select sid,serial#,username from V$sessio

    1.登录到oracle系统用户

    >sqlplus /nolog
    >conn /as sysdba

    2,查看session有那些参数,其中最重要的是sid,serial#,username

    SQL> desc V$session

    3.使用命令查看,sid,serial#,username

    SQL> select sid,serial#,username from V$session;

    4.杀死用户下对应的sid和serial#

    alter system kill session '18,25753' immediate;


    展开全文
  • php中两种彻底删除session的方法

    千次阅读 2014-02-13 22:21:41
    经过测试,php中下面两种方法可以彻底删除session资源 方法一: unset($_SESSION['idy_flag']); session_destroy (); 方法二(官方): $_SESSION = array(); if (isset($_COOKIE[session_name()])) { ...
  • java根据sessionId创建、删除session

    万次阅读 2017-07-21 14:15:56
    在有些情况下可能需要根据sessionId来增删改session,这时候我们可以通过监听来实现。代码如下。 1、创建监听MySessionListener.java public class MySessionListener { public void sessionCreated...
  • 项目用session保存登录状态,客户端登陆后,服务端能不能根据sessionid或者其他什么方法把这个session删除,让他强制下线?
  • 最近在做微信公众号,经理提出当用户关注公众号后并绑定则把用户的绑定信息写到表中,如果取消关注从表中把用户信息删除。一开始感觉很简单,微信推送给服务器的事件中包含有用户的openid。用openid查询用户信息后,...
  • php 官方删除session方式

    千次阅读 2012-06-22 17:51:08
      // 初始化session.   session_start();.../*** 删除所有的session变量..也可用unset($_SESSION[xxx])逐个删除。****/   $_SESSION = array();   /***删除sessin id.由于session默认是基于
  • session_start () ; session_register ( "A" ) ; session_register ( "B" ) ; session_register ( "C" ) ; $A = "AAA"; $B = "BBB"; $C = "CCC"; $result = session_destroy () ; if ($
  • Abandon Abandon 方法删除所有存储在 Session 对象中的对象并释放这些对象的源。如果您未明确地调用 Abandon 方法,一旦会话超时,服务器将删除这些对象 。语法 Session.Abandon注释 Abandon 方法被调用时,将按...
  • * 设置5分钟后删除session中的验证码 * @param session * @param attrName */ private void removeAttrbute(final HttpSession session, final String attrName) { final Timer timer = new Timer(); ...
  • firefox如何删除session记录

    千次阅读 2013-05-03 20:39:37
    http://blog.csdn.net/moonlit1228/article/details/6222647 centos上的firefox没有找到清除session。只是清除了cookie. session 是保存在服务器端的, 浏览器端保存的就是, 也只能是 cookie
  • PHP注销删除Session变量的通用方法

    千次阅读 2013-04-24 22:43:02
    PHP中SESSION的注销方法也比较讲究,如果使用不当,SESSION就有可能无法注销,通用的PHP SEESION注销方法如下:  // 初始化session. // 如果你使用session_name("something")这样的形式, 不要忘记了! ...
  • 删除session中的属性

    千次阅读 2012-04-25 13:57:49
    request.getSession().removeAttribute("employee");
  • 在javaEey坛子上有人提到“robbin提到Hibernate3的缺点,一级缓存的强引用的问题,所以在做批量查询和插入操作的时候需要执行session.flush和session.clear两个操作。” 如批量插入时可以这么做:先在循环里面调用...
  • 转载自: 此处 ...列出当前数据库所有表 ... "select tablename from pg_tables where schemaname='public'" —— 得到所有用户自定义表的名字(这里"tablename"字段是... 提示有session占用时, 用此 方法 删除
  • php中删除session的方式有很多种,本篇文章主要给大家介绍三种清空session的方式,感兴趣的朋友跟着小编一起学习吧
  • session删除

    千次阅读 2019-05-07 20:16:07
    删除某个session值可以使用PHP的unset函数,删除后就会从全局变量$_SESSION中去除,无法访问。 session_start(); SESSION[′name′]=′jobs′;unset(_SESSION[&#x27;name&#x27;] = &#x27;jobs&#x27;...
  • session中的数据进行修改删除

    千次阅读 2019-07-17 19:57:43
    开发工具与关键技术:VS+修改删除session数据 作者: 李伙 撰写时间: 2019年7月16日 在上一篇中讲到了将配件信息保存到session中,再从session查询出保存的配件信息,这样就可以在页面中显示出来,保存数据到...
  • session_unset()释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的sessionidsession_destroy()删除当前用户对应的session文件以及释放sessionid,内存中的$_SESSION变量内容依然...
  • Session用法

    千次阅读 多人点赞 2014-01-05 20:43:45
    1.获取session对象:request.getSession(); 2.给session设置值:session.setAttribute("变量名",值对象); 3.获取session中的值:...4.删除session中的值: session.removeAttribute("变量名"); session.invalida
  • Session

    千次阅读 多人点赞 2019-08-20 21:04:49
    Session 的概念2. Session 的快速入门3. Session 的原理4. Session 的细节4.1 浏览器关闭后,服务器不关闭,两次获取的 Session 对象是同一个吗?4.2 浏览器不关闭,服务器关闭后,两次获取的 Session 对象是同一个...
  • ``` session_start(); if($_GET[out]){ unset($_SESSION[id]); unset($_SESSION[pass]); } echo "<a href='login.php?out=out'><br>...问题是我点退出按钮,session保存的信息不删除,还在。咋办?
  • oracle 强制删除用户session

    千次阅读 2012-08-13 09:20:35
    使用一个语句:  SELECT 'alter system kill session '''||sid||','||serial#||''';' FROM v$session WHERE username='USER';  查出删除的语句集,然后批量执行。
  • PHP的session基础

    2018-06-14 16:28:46
    关于PHP的session的基本使用 认识session的工作原理 1启动session 2读写session的变量 3删除session变量 4session在用户登录中的应用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 406,824
精华内容 162,729
关键字:

如何删除session