zoukankan      html  css  js  c++  java
  • session入库

    要修改session机制要借助一个系统函数
    session_set_save_handler():用来使用外部用户定义的函数,来取代session系统本身的函数。
    session_set_save_handler(开启session机制函数,关闭session机制函数,读取session数据函数,写入session函数,销毁session函数,后手过期session函数)。
    因此我们要准备六个函数。
    代码实现:
    <?php
        //session入库
        //以为修改session机制必须借助session_set_save_handler()函数,该函数需要6个可以调用的回调函数,因此需要创建6个人对应的函数
        //1.开启session机制
        function sess_open()
        {
            //开启资源
            //连接数据库
            mysql_connect('localhost','root','');
            mysql_query('set names utf8');
            mysql_query('use session');

            echo __FUNCTION__,'<br/>';
        }
        //2.关闭session
            function sess_close()
        {
            //关闭资源
            mysql_close();
            echo __FUNCTION__,'<br/>';
        }
        //3.读取session
        function sess_read($sess_id)
        {
            //从数据库读取数据
            //根据sess_id(由系统提供)获取数据
            //读数据时要过滤掉过期的数据
            $expire=time()-ini_get('session.gc_maxlifetime');
            $sql="selsct * from session where sess_id='{$sess_id}' and sess_expire>='{$expire}'";
            $res=mysql_query($sql);
            //得到的是一个数组
            if($sess=@mysql_fetch_assoc($res))
            {
                //得到一个序列化后的字符串
                //要进行反序列化,read只负责读取数据,不负责加工数据
                return $sess['sess_info'];
            }
            echo __FUNCTION__,'<br/>';
        }
        //4.写入session
        function sess_write($sess_id,$sess_info)
        {
            //向数据库中写入数据
            $time=time();
            $sql="replace into session values('{$sess_id}','{$sess_info}','{$time}')";
            mysql_query($sql);
            echo __FUNCTION__,'<br/>';
        }
        //5.销毁session
        function sess_destroy($sess_id)
        {
            
            $sql="delete from session where sess_id='{$sess_id}'";
            return mysql_query($sql);
            echo __FUNCTION__,'<br/>';
        }
        //6.回收session
        function sess_gc()
        { 
            //从数据库删除过期的session数据
            //判断session是否过期,过期的删除
            $expire=ini_get('session.gc_maxlifetime');
            //得到最迟的时间,在$expire之前的都是过期的
            $expire=time()-$expire;
            $sql="delete from session where sess_expire < '{expire}'";
            return mysql_query($sql);
            echo __FUNCTION__,'<br/>';
        }

        //使用session_set_save_handler()修改session机制
        session_set_save_handler('sess_open','sess_close','sess_read','sess_write','sess_destroy','sess_gc');
        //想要使用session,必须要用session_start()来开启
        session_start();
        $_SESSION['name']='wangqixing';
        $_SESSION['age']='23';
        //session_destroy();
  • 相关阅读:
    20165319第五周java学习笔记
    20165319 20165335 结对学习创意照
    20165215 结对编程——四则运算第二周
    20165215 2017-2018-2 《Java程序设计》第八周学习总结
    2017-2018-2 20165215 实验二 Java面向对象程序设计
    20165215 结对编程——四则运算第一周
    20165215 2017-2018-2 《Java程序设计》第7周学习总结
    20165215 2017-2018-2 《Java程序设计》第6周学习总结
    20165215 实验一 Java开发环境的熟悉
    20165215 2017-2018-2 《Java程序设计》第5周学习总结
  • 原文地址:https://www.cnblogs.com/wuwenshuai/p/6769320.html
Copyright © 2011-2022 走看看