php session操作总结

基本操作

//启动session
session_start();

//存取session
$data = $_SESSION[$key];
$_SESSION[$key] = $val;

//删除session
unset($_SESSION[$key]);

//获取sessionid
session_id();

//设置sessionid
session_id($id);

//获取session存储路径
session_save_path();

//设置session存储路径
session_save_path($path);


判断session是否启动

function is_session_started()
{
    if ( php_sapi_name() !== 'cli' ) {
        if ( version_compare(phpversion(), '5.4.0', '>=') ) {
            return session_status() === PHP_SESSION_ACTIVE ? TRUE : FALSE;
        } else {
            return session_id() === '' ? FALSE : TRUE;
        }
    }
    return FALSE;
}

销毁所有session

// 重置会话中的所有变量
session_unset();
// 删除sessionid
if (ini_get("session.use_cookies")) {
	$params = session_get_cookie_params();
	setcookie(session_name(), '', time() - 42000,
			$params["path"], $params["domain"],
			$params["secure"], $params["httponly"]
			);
}
// 最后,销毁会话
session_destroy();

配置使用memcache来存取session(默认为文件)

ini_set('session.save_handler', 'memcache'); //设置session方式,需在session_start之前
ini_set('session.save_path', 'tcp://127.0.0.1:11211'); //设置session保存路径,需在session_start之前
session_start();

自定义session存储

在php配置中设置session.save_handler 为 'user'

用bool session_set_save_handler (SessionHandlerInterface $sessionhandler [, bool $register_shutdown = true ] ) 设置自定义的session处理类

例如自定义使用memcache存session

class MySession implements \SessionHandlerInterface 
{
	private $_memcache;
	
	public function open($savePath, $sessionName)
	{
		$this->_memcache = new \Memcache();
		$matchs = array();
		preg_match('/tcp:\/\/(.*):(.*)/', $savePath, $matchs);
		
		return $this->_memcache->connect($matchs[1], (int)$matchs[2]);
	}
	
	public function close()
	{
		$this->_memcache->close();
		return true;
	}
	
	public function read($id)
	{
		return $this->_memcache->get($id);
		//return (string)@file_get_contents("$this->savePath/sess_$id");
	}
	
	public function write($id, $data)
	{
		return $this->_memcache->set($id, $data);
		//return true;
		//return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
	}
	
	public function destroy($id)
	{
		return $this->_memcache->delete($id);
		//return true;
	}
	
	public function gc($maxlifetime)
	{
		/*
		foreach (glob("$this->savePath/sess_*") as $file) {
			if (filemtime($file) + $maxlifetime < time() && file_exists($file)) {
				unlink($file);
			}
		}
		*/
		return true;
	}
}
ini_set('session.save_handler', 'user');
ini_set('session.save_path', 'tcp://127.0.0.1:11211');
session_set_save_handler(new MySession());



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值