/** * Session类简单实现 * @author zhjx922 */class Session{ //当前sessionId private $_sessionId; //session的储存路径 private $_sessionPath = '/tmp/session'; /** * 初始化sessionId */ public function __construct() { if(isset($_COOKIE['PHPSESSID']) && $this->checkSession($_COOKIE['PHPSESSID'])) { $this->_sessionId = $_COOKIE['PHPSESSID']; } else { $this->_sessionId = uniqid(); setcookie("PHPSESSID", $this->_sessionId); } } /** * 设置session * @param string $key * @param mixed $value */ public function setSession($key, $value) { $sessionInfo = $this->getSessionInfo(); $sessionInfo[$key] = $value; $sessionFile = "{$this->_sessionPath}/{$this->_sessionId}"; file_put_contents($sessionFile, serialize($sessionInfo)); } /** * 获取session * @param string $key * @return mixed */ public function getSession($key) { return $this->getSessionInfo()[$key]; } /** * 获取当前sessionId下的内容 * @return array */ private function getSessionInfo() { if(!is_dir($this->_sessionPath)) { mkdir($this->_sessionPath); } $sessionFile = "{$this->_sessionPath}/{$this->_sessionId}"; if(is_file($sessionFile)) { $contents = file_get_contents($sessionFile); return unserialize($contents); } return []; } /** * 检查session是否有效 * @param string $sessionId * @return bool */ private function checkSession($sessionId) { $sessionFile = "{$this->_sessionPath}/{$sessionId}"; if(is_file($sessionFile)) { return true; } return false; }}
使用方法如下
$session = new Session();$session->setSession('a', 'b'); //第二次访问时注释掉这行,验证下一行$session->getSession('a')输出的内容是否正确var_dump($session->getSession('a'));
联系客服