php session 生命周期代码实例

        我们为什么需要Session,就是因为我们需要存储各个用户的状态数据。那么试问,如果由你来设计解决这个需求的方案,那么也许你会设置这样一个数据表用与存储各个用户的状态信息:

session是很抽象的一个概念。我们不妨先从与它几个息息相关的有迹可寻的小切入点入手,然后逐渐地认识了解它。

php session是基于cookie的,所以要设置session的生命周期,首先要设置cookie的失效时间。因为在客户端(如浏览器)登录网站时,SESSION 是否有用,首先找客户端是否有 COOKIE,通过COOKIE 中的 SESSION ID 去找服务器上的文件。
        这样的话,做了以下设置:

session_set_cookie_params( 12*60*60 );//设置cookie的有效期
        session_cache_expire(12*60);//设置session的有效期

        我们继续来看session用法实例:

        新建A.php
        <?php
            session_start();
            $_SESSION['test']='sssssssssssss';
            echosession_id().'<br />';
            echo$_SESSION['test'];
        ?>

        我们新建B.php,并浏览会发现session已经存在
        <?php
           session_start();
           echo session_id(),'<br/>';
           echo $_SESSION['test'];
        ?>

        注意:如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候扮演的是存储 Session ID 和 Session 生存期的角色。我们来手动设置 Session 的生存期:

<?php
            session_start();
            // 保存一天
            $lifeTime = 24 * 3600;
            setcookie(session_name(), session_id(), time() + $lifeTime, "/");
        ?>

        下面我们来观察session_destroy()与session_unset()的区别

        <?php
            session_start();
            echo "<br/>---1--<br/>";
            $pg_uid = 1;
            //$_SESSION['pg_uid'];    //该行会报一个Notice消息,即没有初始化该变量
            $_SESSION['pg_name'] = 'boys';    //填入到$_SESSION变量,但不立即写入session文件,值为boys
            $pg_sex = 1;
            $pg_theme = 'default';
            session_register('pg_sex');    //填入到$_SESSION变量,但不立即写入session文件,值为NULL
            session_register('pg_theme');    //填入到$_SESSION变量,但不立即写入session文件,值为NULL
            var_dump($_SESSION);

//--
            echo "<br/>---2--<br/>";
            unset($_SESSION['pg_theme']);    //从$_SESSION清除该元素,不立即同步到session文件
            unset($_SESSION['pg_name']);    //从$_SESSION清除该元素,不立即同步到session文件
            session_unregister('pg_sex');    //从$_SESSION清除该元素,不立即同步到session文件
            session_unregister('pg_uid');    //从$_SESSION清除该元素,不立即同步到session文件
            var_dump($_SESSION);

echo "<br/>---3--<br/>";
            $_SESSION['pg_members'] = 5;    //填入$_SESSION数组,但不立即同步到session文件,值为5
            $pg_boy = 6;
            session_register('pg_boy');    //填入$_SESSION数组,但不立即同步到session文件,值为NULL
            session_unset($_SESSION);    //清空$_SESSION
            var_dump($_SESSION);
             
            echo "<br/>---4--<br/>";
            $_SESSION['pg_boss'] = 3;    //填入$_SESSION数组,但不立即同步到session文件,值为3
            $pg_girls = 6;
            session_register('pg_girls');    //填入$_session数组,但不立即同步到session文件,值为NULL
            session_destroy();    //注销session_destroy
            var_dump($_SESSION);
             
            echo "<br/>---5---<br/>";
            session_unregister('pg_boss');    //pg_boss不会被清除,还为NULL
            session_unset();    //不会清空$_SESSION数组,因为session已被session_destroy注销
            var_dump($_SESSION);
        ?>

       其实PHP5 Session还提供了一个函数 session_set_cookie_params(); 来设置PHP5 Session的生存期的,该函数必须在 session_start() 函数调用之前调用:

        <?php
            // 保存一天
            $lifeTime = 24 * 3600;
            session_set_cookie_params($lifeTime);
            session_start();
        ?>

php session 生命周期代码实例的更多相关文章

  1. Vue系列(二):发送Ajax、JSONP请求、Vue生命周期及实例属性和方法、自定义指令与过渡

    上一篇:Vue系列(一):简介.起步.常用指令.事件和属性.模板.过滤器 一. 发送AJAX请求 1. 简介 vue本身不支持发送AJAX请求,需要使用vue-resource.axios等插件实现 ...

  2. session生命周期

    session生命周期 原文链接:http://blog.sina.com.cn/s/blog_72c8c1150100qpgl.html 文中黄色字体为我的标记修改或添加 Session保存在服务器 ...

  3. JAVA-JSP内置对象之session对象设置并获得session生命周期

    相关资料:<21天学通Java Web开发> session对象设置并获得session生命周期1.通过session对象的setMaxInactiveInterval()方法可以设置se ...

  4. session生命周期,与cookie的区别

    sessinon在用户访问第一次访问服务器时创建. Session什么时候失效? 1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效.Tomcat中Sessio ...

  5. session生命周期(一)

    Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Session在用户访问第一次访问服务器时创建,需要注意只有访问JSP.Servlet等程序时才会创建Session,只访问 ...

  6. php会话(session)生命周期概念介绍及设置更改和回收

    http://www.169it.com/article/8429580816135935852.html https://my.oschina.net/jiec/blog/227252  sessi ...

  7. Session生命周期讨论

    文章级别:Java初级    预备技能点:JSP内置对象, 监听器, 序列化           在程序开发的时候, request session appplication内置对象, 是用的比较多的 ...

  8. JavaWeb关于session生命周期的几种设置方法

    一般session的生命周期都是建立在用户登录系统后对用户信息进行一个记录,session类似于你有一张银行卡,而卡里的钱就是属于session存储的信息,卡掉了就不能取出里面的钱. 以前sessio ...

  9. Request Session生命周期及struts1 中service的编写

    现在接手的项目是一个早期的struts1框架的项目.同时也是刚开始接触web 以及struts1架构. 在处理多个action时,有一个tab子页面需要每5s自动刷新一次. 然后在测试过程中发现,点击 ...

随机推荐

  1. Why attitude is more important than IQ

    原文:http://www.businessinsider.com/why-attitude-is-more-important-than-iq-2015-9?IR=T& LinkedIn I ...

  2. ural1542 Autocompletion

    Autocompletion Time limit: 2.0 secondMemory limit: 64 MB The Japanese are infinitely in love with ma ...

  3. nullable,kindof,泛型新特性

    文章来自: http://blog.csdn.net/majiakun1/article/details/46530245 Overview 自 WWDC 2015 推出和开源 Swift 2.0 后 ...

  4. HDU 4393 Throw nails(优先队列)

    优先队列的应用 好坑,好坑,好坑,重要的事情说三遍! #include<iostream> #include<cstdio> #include<cstring> # ...

  5. jsp的Get 与 SET的区别

    getParameter:获取前个页面的数据,此方法获取的数据是从前台提交过来的 getAttribute:是获取setAttribute存储的数据 ========================= ...

  6. iPad开发中UIPopoverController的使用

    什么是UIPopoverController 是iPad开发中常见的一种控制器 跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController 它只占用部分屏幕空间来 ...

  7. Android提高第十二篇之蓝牙传感应用

        请问淘宝上买的单片机蓝牙模块与安卓/android手机通讯的时候需要设置UUID吗? 2013-02-15 09:39 在世张辽 | 浏览 2769 次 想用安卓手机和单片机通过蓝牙模块通讯, ...

  8. 笔记:利用Cocos2dx 3.3 lua 做一个动作类游戏(一)

    在这之前,声明一下: 做不完我是小狗. 没办法,没毅力和恒心,之前的那个Quick Cocos2dx做的横版过关游戏的demo已经转成了3.3的版本了,其实也算是个半成品,战斗,UI啥的都有了,呵呵. ...

  9. [算法] kmp实现

    字符串查找是经典场景,也是面试中最常见的一道题. 说来惭愧,毕业3年了,才明白了kmp算法的实现,以前一直以为这类算法是基础,工作中中不会碰到[也的确没有碰到过...] 但是,对这些基本算法结构的理解 ...

  10. Android非常实用的开源项目框架

    我将文章中所描述的项目都集成在一个apk中,可以直接运行查看效果,2.2以上的机器都可以运行.因为不让直接上传apk文件,我压缩成了zip包 1. Universal-Image-Loader 实现异 ...