PHP Session

2017-12-28  本文已影响5人  CK星空

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;
    }
上一篇下一篇

猜你喜欢

热点阅读