Modules
Session_Native
extends Kohana_Session_Native
extends Session
extends Kohana_Session
Native PHP session class.
Class declared in SYSPATH/classes/session/native.php on line 3.
Constants
- None
Properties
Properties
public static
string$defaultdefault session adapter
string(6) "native"public static
array$instancessession instances
array(0)protected
array$_datasession data
protected
bool$_destroyedsession destroyed?
protected
bool$_encryptedencrypt session data?
protected
int$_lifetimecookie lifetime
protected
string$_namecookie name
Methods
public id( ) (defined in Kohana_Session_Native)
Return Values
string
Source Code
public function id()
{
return session_id();
}
public __construct( [ array $config = NULL , string $id = NULL ] ) (defined in Kohana_Session)
Overloads the name, lifetime, and encrypted session settings.
Sessions can only be created using the Session::instance method.
Parameters
-
array$config = NULL - Configuration -
string$id = NULL - Session id
Tags
Return Values
void
Source Code
public function __construct(array $config = NULL, $id = NULL)
{
if (isset($config['name']))
{
// Cookie name to store the session id in
$this->_name = (string) $config['name'];
}
if (isset($config['lifetime']))
{
// Cookie lifetime
$this->_lifetime = (int) $config['lifetime'];
}
if (isset($config['encrypted']))
{
if ($config['encrypted'] === TRUE)
{
// Use the default Encrypt instance
$config['encrypted'] = 'default';
}
// Enable or disable encryption of data
$this->_encrypted = $config['encrypted'];
}
// Load the session
$this->read($id);
}
public __toString( ) (defined in Kohana_Session)
Session object is rendered to a serialized string. If encryption is enabled, the session will be encrypted. If not, the output string will be encoded using base64_encode.
echo $session;
Tags
Return Values
string
Source Code
public function __toString()
{
// Serialize the data array
$data = serialize($this->_data);
if ($this->_encrypted)
{
// Encrypt the data using the default key
$data = Encrypt::instance($this->_encrypted)->encode($data);
}
else
{
// Obfuscate the data with base64 encoding
$data = base64_encode($data);
}
return $data;
}
public as_array( ) (defined in Kohana_Session)
Returns the current session array. The returned array can also be assigned by reference.
// Get a copy of the current session data
$data = $session->as_array();
// Assign by reference for modification
$data =& $session->as_array();
Return Values
array
Source Code
public function & as_array()
{
return $this->_data;
}
public bind( string $key , mixed & $value ) (defined in Kohana_Session)
Set a variable by reference.
$session->bind('foo', $foo);
Parameters
-
string$key required - Variable name -
byref mixed$value required - Referenced value
Return Values
$this
Source Code
public function bind($key, & $value)
{
$this->_data[$key] =& $value;
return $this;
}
public delete( string $key ) (defined in Kohana_Session)
Removes a variable in the session array.
$session->delete('foo');
Parameters
-
string$key required - Variable name
Return Values
$this
Source Code
public function delete($key)
{
$args = func_get_args();
foreach ($args as $key)
{
unset($this->_data[$key]);
}
return $this;
}
public destroy( ) (defined in Kohana_Session)
Completely destroy the current session.
$success = $session->destroy();
Return Values
boolean
Source Code
public function destroy()
{
if ($this->_destroyed === FALSE)
{
if ($this->_destroyed = $this->_destroy())
{
// The session has been destroyed, clear all data
$this->_data = array();
}
}
return $this->_destroyed;
}
public get( string $key [, mixed $default = NULL ] ) (defined in Kohana_Session)
Get a variable from the session array.
$foo = $session->get('foo');
Parameters
-
string$key required - Variable name -
mixed$default = NULL - Default value to return
Return Values
mixed
Source Code
public function get($key, $default = NULL)
{
return array_key_exists($key, $this->_data) ? $this->_data[$key] : $default;
}
public get_once( string $key [, mixed $default = NULL ] ) (defined in Kohana_Session)
Get and delete a variable from the session array.
$bar = $session->get_once('bar');
Parameters
-
string$key required - Variable name -
mixed$default = NULL - Default value to return
Return Values
mixed
Source Code
public function get_once($key, $default = NULL)
{
$value = $this->get($key, $default);
unset($this->_data[$key]);
return $value;
}
public static instance( [ string $type = NULL , string $id = NULL ] ) (defined in Kohana_Session)
Creates a singleton session of the given type. Some session types (native, database) also support restarting a session by passing a session id as the second parameter.
$session = Session::instance();
Session::write will automatically be called when the request ends.
Parameters
-
string$type = NULL - Type of session (native, cookie, etc) -
string$id = NULL - Session identifier
Tags
Return Values
Session
Source Code
public static function instance($type = NULL, $id = NULL)
{
if ($type === NULL)
{
// Use the default type
$type = Session::$default;
}
if ( ! isset(Session::$instances[$type]))
{
// Load the configuration for this type
$config = Kohana::config('session')->get($type);
// Set the session class name
$class = 'Session_'.ucfirst($type);
// Create a new session instance
Session::$instances[$type] = $session = new $class($config, $id);
// Write the session at shutdown
register_shutdown_function(array($session, 'write'));
}
return Session::$instances[$type];
}
public name( ) (defined in Kohana_Session)
Get the current session cookie name.
$name = $session->name();
Tags
Return Values
string
Source Code
public function name()
{
return $this->_name;
}
public read( [ string $id = NULL ] ) (defined in Kohana_Session)
Loads existing session data.
$session->read();
Parameters
-
string$id = NULL - Session id
Return Values
void
Source Code
public function read($id = NULL)
{
if (is_string($data = $this->_read($id)))
{
try
{
if ($this->_encrypted)
{
// Decrypt the data using the default key
$data = Encrypt::instance($this->_encrypted)->decode($data);
}
else
{
// Decode the base64 encoded data
$data = base64_decode($data);
}
// Unserialize the data
$data = unserialize($data);
}
catch (Exception $e)
{
// Ignore all reading errors
}
}
if (is_array($data))
{
// Load the data locally
$this->_data = $data;
}
}
public regenerate( ) (defined in Kohana_Session)
Generates a new session id and returns it.
$id = $session->regenerate();
Return Values
string
Source Code
public function regenerate()
{
return $this->_regenerate();
}
public set( string $key , mixed $value ) (defined in Kohana_Session)
Set a variable in the session array.
$session->set('foo', 'bar');
Parameters
-
string$key required - Variable name -
mixed$value required - Value
Return Values
$this
Source Code
public function set($key, $value)
{
$this->_data[$key] = $value;
return $this;
}
public write( ) (defined in Kohana_Session)
Sets the last_active timestamp and saves the session.
$session->write();
Any errors that occur during session writing will be logged, but not displayed, because sessions are written after output has been sent.
Tags
Return Values
boolean
Source Code
public function write()
{
if (headers_sent() OR $this->_destroyed)
{
// Session cannot be written when the headers are sent or when
// the session has been destroyed
return FALSE;
}
// Set the last active timestamp
$this->_data['last_active'] = time();
try
{
return $this->_write();
}
catch (Exception $e)
{
// Log & ignore all errors when a write fails
Kohana::$log->add(Kohana::ERROR, Kohana::exception_text($e))->write();
return FALSE;
}
}
protected _destroy( ) (defined in Kohana_Session_Native)
Return Values
bool
Source Code
protected function _destroy()
{
// Destroy the current session
session_destroy();
// Did destruction work?
$status = ! session_id();
if ($status)
{
// Make sure the session cannot be restarted
Cookie::delete($this->_name);
}
return $status;
}
protected _read( [ string $id = NULL ] ) (defined in Kohana_Session_Native)
Parameters
-
string$id = NULL - Session id
Return Values
null
Source Code
protected function _read($id = NULL)
{
// Sync up the session cookie with Cookie parameters
session_set_cookie_params($this->_lifetime, Cookie::$path, Cookie::$domain, Cookie::$secure, Cookie::$httponly);
// Do not allow PHP to send Cache-Control headers
session_cache_limiter(FALSE);
// Set the session cookie name
session_name($this->_name);
if ($id)
{
// Set the session id
session_id($id);
}
// Start the session
session_start();
// Use the $_SESSION global for storing data
$this->_data =& $_SESSION;
return NULL;
}
protected _regenerate( ) (defined in Kohana_Session_Native)
Return Values
string
Source Code
protected function _regenerate()
{
// Regenerate the session id
session_regenerate_id();
return session_id();
}
protected _write( ) (defined in Kohana_Session_Native)
Return Values
bool
Source Code
protected function _write()
{
// Write and close the session
session_write_close();
return TRUE;
}