zoukankan      html  css  js  c++  java
  • php session 生命周期代码实例

     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 数组添加关联元素的方法小结(关联数组添加元素)
    阿里云PHP Redis代码示例
    linux内核编程笔记【原创】
    linux RTC 驱动模型分析【转】
    linux 实时时钟(RTC)驱动【转】
    RTC系统【转】
    IRQ和FIQ中断的区别【转】
    NAND Flash【转】
    NandFlash详述【转】
    展讯NAND Flash高级教程【转】
  • 原文地址:https://www.cnblogs.com/qingsong/p/5131277.html
Copyright © 2011-2022 走看看