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. 转 玩转Bash变量

    PS : 注意本文讨论的是Bash,而不一定是/bin/sh所链接的那个shell.这里出现的所有代码片段,默认在顶上都添加了#!/bin/bash. 一门自带混淆的语言 while (( $# )) ...

  2. iOS:判断昨天,今天,今年

    - (BOOL)isThisYear { // 日历 NSCalendar *calendar = [NSCalendar currentCalendar]; NSInteger nowYear = ...

  3. DWR整合之Servlet

    DWR 与 Servlet 有 2 个 Java 类你一般需要用在 DWR 中,是 webContext 和 WebContextFactory 在 DWR 1.x 它们在 uk.ltd.getahe ...

  4. s15day14 ssh秘钥远程连接

    1 使用密钥登录    1.1 创建密钥对    1.2 上传公钥文件    1.3 导入公钥信息    1.4 使用密钥对登录2 远程执行命令    2.1 简单命令    2.2 使用脚本执行多命 ...

  5. mariadb cache

    Since MariaDB Galera cluster versions 5.5.40 and 10.0.14 you can use the query cache. Earlier versio ...

  6. git 以及 github 使用系列

    本人打算开始写一个有关git 使用,以及github 使用的系列文章了,一来可以自己总结,二来github用好了,可以存放自己的一些知识框架吧. 1.准备 : 有一个 github上的账号, wind ...

  7. GoEasy消息推送

    1. 从GoEasy获取appkey appkey是验证用户的有效性的唯一标识. 注册账号. GoEasy官网:https://goeasy.io 用注册好的账号登录到GoEasy的后台管理系统,创建 ...

  8. 小偷网站工具--Teleport Ultra

    可以克隆别人网站的工具 http://jingyan.baidu.com/article/219f4bf7dce58bde442d3836.html

  9. STM32驱动AT24CXX系列芯片

    AT24Cxx系列EEPROM是由美国Mcrochip公司出品,1-512K位的支持I2C总线数据传送协议的串行CMOS E2PROM,可用电擦除,可编程自定时写周期(包括自动擦除时间不超过10ms, ...

  10. Android NDK开发及调用标准linux动态库.so文件

    源:Android NDK开发及调用标准linux动态库.so文件 预备知识及环境搭建 1.NDK(native development Kit)原生开发工具包,用来快速开发C.C++动态库,并能自动 ...