美文网首页
PHP Session

PHP Session

作者: CK星空 | 来源:发表于2017-12-28 17:00 被阅读5次

    Session是服务器与浏览器或者客户端之间的一条“纽带”,我以前疑惑既然有Cookie了,为什么还要有Session呢。原来这两者是不同的。Cookie一般是把数据存在浏览器里,Session是存在Cookie里面,Session也可以是文件存在服务器里,也可以转换为存在数据库里和内存里。Session的函数也比Cookie的函数多一些,下面是一些常用的函数。

    数据都保存在超全局数组$_SESSION中,任何相关session的数据都需要用到这个变量。

    session_cache_expire()--返回当前缓存的到期时间
    session_destroy()--销毁会话数据
    session_gc()--垃圾回收,概率触发或定时触发
    session_id()--获取/设置当前ID
    session_is_registered()--检查变量是否在会话中已经注册
    session_register_shutdown()--关闭会话
    session_save_path()--读取/设置当前会话的保存路径

    下面是SessionHandlerInterface类,名字就直接反映了这个类的功能。
    SessionHandlerInterface::close
    SessionHandlerInterface::destroy
    SessionHandlerInterface::gc
    SessionHandlerInterface::open
    SessionHandlerInterface::read
    SessionHandlerInterface::write

    下面这段代码是把session写进数据库的,从慕课网的PHP课程摘抄的,很实用。

    public function write($session_id,$session_data){
            $newExp=time()+$this->lifetime;
            $session_id=mysqli_escape_string($this->link,$session_id);
            //首先查询是否存在指定的Session_id,如果存在相当于更新数据,否则是第一次,则写入数据
            $sql="SELECT * FROM sessions WHERE session_id='{$session_id}'";
            $result=mysqli_query($this->link,$sql);
            if(mysqli_num_rows($result)==1){
                $sql="UPDATE sessions SET session_expires='{$newExp}',session_data='{$session_data}' WHERE session_id='{$session_id}'";
            }else{
                $sql="INSERT sessions VALUES('{$session_id}','$session_data','{$newExp}')";
            }
            mysqli_query($this->link,$sql);
    
            return mysqli_affected_rows($this->link)==1;
        }
    

    相关文章

      网友评论

          本文标题:PHP Session

          本文链接:https://www.haomeiwen.com/subject/adyvgxtx.html