280 lines
7.6 KiB
PHP
280 lines
7.6 KiB
PHP
<?php
|
|
|
|
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
|
|
|
/**
|
|
* Container class for storing session data
|
|
*
|
|
* PHP version 4
|
|
*
|
|
* LICENSE: This source file is subject to version 3.0 of the PHP license
|
|
* that is available through the world-wide-web at the following URI:
|
|
* http://www.php.net/license/3_0.txt. If you did not receive a copy of
|
|
* the PHP License and are unable to obtain it through the web, please
|
|
* send a note to license@php.net so we can mail you a copy immediately.
|
|
*
|
|
* @category HTTP
|
|
* @package HTTP_Session
|
|
* @author Alexander Radivanovich <info@wwwlab.net>
|
|
* @author David Costa <gurugeek@php.net>
|
|
* @author Michael Metz <pear.metz@speedpartner.de>
|
|
* @author Stefan Neufeind <pear.neufeind@speedpartner.de>
|
|
* @author Torsten Roehr <torsten.roehr@gmx.de>
|
|
* @copyright 1997-2005 The PHP Group
|
|
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
|
* @version CVS: $Id: Container.php,v 1.8 2007/07/14 12:11:54 troehr Exp $
|
|
* @link http://pear.php.net/package/HTTP_Session
|
|
* @since File available since Release 0.4.0
|
|
*/
|
|
|
|
/**
|
|
* Container class for storing session data
|
|
*
|
|
* @category HTTP
|
|
* @package HTTP_Session
|
|
* @author David Costa <gurugeek@php.net>
|
|
* @author Michael Metz <pear.metz@speedpartner.de>
|
|
* @author Stefan Neufeind <pear.neufeind@speedpartner.de>
|
|
* @author Torsten Roehr <torsten.roehr@gmx.de>
|
|
* @copyright 1997-2005 The PHP Group
|
|
* @license http://www.php.net/license/3_0.txt PHP License 3.0
|
|
* @version Release: @package_version@
|
|
* @link http://pear.php.net/package/HTTP_Session
|
|
* @since Class available since Release 0.4.0
|
|
*/
|
|
class HTTP_Session_Container
|
|
{
|
|
/**
|
|
* Additional options for the container object
|
|
*
|
|
* @var array
|
|
* @access private
|
|
*/
|
|
var $options = array();
|
|
|
|
/**
|
|
* Constrtuctor method
|
|
*
|
|
* @param array $options Additional options for the container object
|
|
*
|
|
* @access public
|
|
* @return object
|
|
*/
|
|
function HTTP_Session_Container($options = null)
|
|
{
|
|
$this->_setDefaults();
|
|
if (is_array($options)) {
|
|
$this->_parseOptions();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Set some default options
|
|
*
|
|
* @access private
|
|
* @return void
|
|
*/
|
|
function _setDefaults()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Parse options passed to the container class
|
|
*
|
|
* @param array $options Options
|
|
*
|
|
* @access private
|
|
* @return void
|
|
*/
|
|
function _parseOptions($options)
|
|
{
|
|
foreach ($options as $option => $value) {
|
|
if (in_array($option, array_keys($this->options))) {
|
|
$this->options[$option] = $value;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* This function is called by the session handler to initialize things
|
|
*
|
|
* @param string $save_path Save path
|
|
* @param string $session_name Session name
|
|
*
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
function open($save_path, $session_name)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* This function is called when the page is finished
|
|
* executing and the session handler needs to close things off
|
|
*
|
|
* Has to be overwritten by each container class
|
|
*
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
function close()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* This function is called by the session handler
|
|
* to read the data associated with a given session ID.
|
|
* This function must retrieve and return the session data
|
|
* for the session identified by $id.
|
|
*
|
|
* Has to be overwritten by each container class
|
|
*
|
|
* @param string $id ID of the session
|
|
*
|
|
* @access public
|
|
* @return string
|
|
*/
|
|
function read($id)
|
|
{
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* This function is called when the session handler
|
|
* has session data to save, which usually happens
|
|
* at the end of your script
|
|
*
|
|
* Has to be overwritten by each container class
|
|
*
|
|
* @param string $id ID of the session
|
|
* @param mixed $data The data associated with a given session ID
|
|
*
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
function write($id, $data)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* This function is called when a session is destroyed.
|
|
* It is responsible for deleting the session and cleaning things up.
|
|
*
|
|
* Has to be overwritten by each container class
|
|
*
|
|
* @param string $id ID of the session
|
|
*
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
function destroy($id)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* This function copies session data of specified id to specified table
|
|
*
|
|
* Has to be overwritten by each container class
|
|
*
|
|
* @param string $targetTable Table to replicate data to
|
|
* @param string $id ID of the session
|
|
*
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
function replicate($targetTable, $id = null)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* This function is responsible for garbage collection.
|
|
* In the case of session handling, it is responsible
|
|
* for deleting old, stale sessions that are hanging around.
|
|
* The session handler will call this every now and then.
|
|
*
|
|
* Has to be overwritten by each container class
|
|
*
|
|
* @param integer $maxlifetime Maximum lifetime
|
|
*
|
|
* @access public
|
|
* @return bool
|
|
*/
|
|
function gc($maxlifetime)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Set session save handler
|
|
*
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
function set()
|
|
{
|
|
$GLOBALS['HTTP_Session_Container'] =& $this;
|
|
session_module_name('user');
|
|
session_set_save_handler('HTTP_Session_Open',
|
|
'HTTP_Session_Close',
|
|
'HTTP_Session_Read',
|
|
'HTTP_Session_Write',
|
|
'HTTP_Session_Destroy',
|
|
'HTTP_Session_GC');
|
|
}
|
|
|
|
/**
|
|
* Destructor for compatibility with PHP >= 5.0.5
|
|
*
|
|
* @access private
|
|
* @return void
|
|
*/
|
|
function __destruct()
|
|
{
|
|
$GLOBALS['HTTP_Session_Container'] =& $this;
|
|
session_write_close();
|
|
}
|
|
}
|
|
|
|
// Delegate function calls to the object's methods
|
|
/** @ignore */
|
|
function HTTP_Session_Open($save_path, $session_name)
|
|
{
|
|
return (isset($GLOBALS['HTTP_Session_Container'])) ? $GLOBALS['HTTP_Session_Container']->open($save_path, $session_name)
|
|
: false;
|
|
}
|
|
/** @ignore */
|
|
function HTTP_Session_Close()
|
|
{
|
|
return (isset($GLOBALS['HTTP_Session_Container'])) ? $GLOBALS['HTTP_Session_Container']->close()
|
|
: false;
|
|
}
|
|
/** @ignore */
|
|
function HTTP_Session_Read($id)
|
|
{
|
|
return (isset($GLOBALS['HTTP_Session_Container'])) ? $GLOBALS['HTTP_Session_Container']->read($id)
|
|
: false;
|
|
}
|
|
/** @ignore */
|
|
function HTTP_Session_Write($id, $data)
|
|
{
|
|
return (isset($GLOBALS['HTTP_Session_Container'])) ? $GLOBALS['HTTP_Session_Container']->write($id, $data)
|
|
: false;
|
|
}
|
|
/** @ignore */
|
|
function HTTP_Session_Destroy($id)
|
|
{
|
|
return (isset($GLOBALS['HTTP_Session_Container'])) ? $GLOBALS['HTTP_Session_Container']->destroy($id)
|
|
: false;
|
|
}
|
|
/** @ignore */
|
|
function HTTP_Session_GC($maxlifetime)
|
|
{
|
|
return (isset($GLOBALS['HTTP_Session_Container'])) ? $GLOBALS['HTTP_Session_Container']->gc($maxlifetime)
|
|
: false;
|
|
}
|
|
?>
|