MIF_E31222691/laravel/session/cookie.php

84 lines
1.6 KiB
PHP

<?php namespace Laravel\Session;
use Laravel\Config;
use Laravel\Security\Crypter;
class Cookie extends Driver {
/**
* The cookie engine instance.
*
* @var Cookie_Engine
*/
private $cookie;
/**
* The Crypter instance.
*
* @var Crypter
*/
private $crypter;
/**
* Create a new Cookie session driver instance.
*
* @param Crypter $crypter
* @param Cookie $cookie
* @return void
*/
public function __construct(Crypter $crypter, Cookie $cookie)
{
$this->cookie = $cookie;
$this->crypter = $crypter;
if (Config::get('application.key') == '')
{
throw new \Exception("You must set an application key before using the Cookie session driver.");
}
}
/**
* Load a session by ID.
*
* The session will be retrieved from persistant storage and returned as an array.
* The array contains the session ID, last activity UNIX timestamp, and session data.
*
* @param string $id
* @return array
*/
protected function load($id)
{
if ($this->cookie->has('session_payload'))
{
return unserialize($this->crypter->decrypt($this->cookie->get('session_payload')));
}
}
/**
* Save the session to persistant storage.
*
* @return void
*/
protected function save()
{
if ( ! headers_sent())
{
extract(Config::get('session'));
$payload = $this->crypter->encrypt(serialize($this->session));
$this->cookie->put('session_payload', $payload, $lifetime, $path, $domain, $https, $http_only);
}
}
/**
* Delete the session from persistant storage.
*
* @return void
*/
protected function delete()
{
$this->cookie->forget('session_payload');
}
}