diff options
Diffstat (limited to 'lib/adodb/session')
| -rw-r--r-- | lib/adodb/session/adodb-compress-bzip2.php | 118 | ||||
| -rw-r--r-- | lib/adodb/session/adodb-compress-gzip.php | 93 | ||||
| -rw-r--r-- | lib/adodb/session/adodb-cryptsession.php | 27 | ||||
| -rw-r--r-- | lib/adodb/session/adodb-cryptsession2.php | 27 | ||||
| -rw-r--r-- | lib/adodb/session/adodb-encrypt-mcrypt.php | 109 | ||||
| -rw-r--r-- | lib/adodb/session/adodb-encrypt-md5.php | 39 | ||||
| -rw-r--r-- | lib/adodb/session/adodb-encrypt-secret.php | 48 | ||||
| -rw-r--r-- | lib/adodb/session/adodb-encrypt-sha1.php | 32 | ||||
| -rw-r--r-- | lib/adodb/session/adodb-session-clob.php | 24 | ||||
| -rw-r--r-- | lib/adodb/session/adodb-session-clob2.php | 24 | ||||
| -rw-r--r-- | lib/adodb/session/adodb-session.php | 934 | ||||
| -rw-r--r-- | lib/adodb/session/adodb-session2.php | 941 | ||||
| -rw-r--r-- | lib/adodb/session/crypt.inc.php | 161 | ||||
| -rw-r--r-- | lib/adodb/session/old/adodb-cryptsession.php | 324 | ||||
| -rw-r--r-- | lib/adodb/session/old/adodb-session-clob.php | 448 | ||||
| -rw-r--r-- | lib/adodb/session/old/adodb-session.php | 439 | ||||
| -rw-r--r-- | lib/adodb/session/old/crypt.inc.php | 64 | ||||
| -rw-r--r-- | lib/adodb/session/session_schema.xml | 26 | ||||
| -rw-r--r-- | lib/adodb/session/session_schema2.xml | 38 |
19 files changed, 0 insertions, 3916 deletions
diff --git a/lib/adodb/session/adodb-compress-bzip2.php b/lib/adodb/session/adodb-compress-bzip2.php deleted file mode 100644 index 79c3823..0000000 --- a/lib/adodb/session/adodb-compress-bzip2.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - -/* -V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. - Contributed by Ross Smith (adodb@netebb.com). - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Set tabs to 4 for best viewing. - -*/ - -if (!function_exists('bzcompress')) { - trigger_error('bzip2 functions are not available', E_USER_ERROR); - return 0; -} - -/* -*/ -class ADODB_Compress_Bzip2 { - /** - */ - var $_block_size = null; - - /** - */ - var $_work_level = null; - - /** - */ - var $_min_length = 1; - - /** - */ - function getBlockSize() { - return $this->_block_size; - } - - /** - */ - function setBlockSize($block_size) { - assert('$block_size >= 1'); - assert('$block_size <= 9'); - $this->_block_size = (int) $block_size; - } - - /** - */ - function getWorkLevel() { - return $this->_work_level; - } - - /** - */ - function setWorkLevel($work_level) { - assert('$work_level >= 0'); - assert('$work_level <= 250'); - $this->_work_level = (int) $work_level; - } - - /** - */ - function getMinLength() { - return $this->_min_length; - } - - /** - */ - function setMinLength($min_length) { - assert('$min_length >= 0'); - $this->_min_length = (int) $min_length; - } - - /** - */ - function ADODB_Compress_Bzip2($block_size = null, $work_level = null, $min_length = null) { - if (!is_null($block_size)) { - $this->setBlockSize($block_size); - } - - if (!is_null($work_level)) { - $this->setWorkLevel($work_level); - } - - if (!is_null($min_length)) { - $this->setMinLength($min_length); - } - } - - /** - */ - function write($data, $key) { - if (strlen($data) < $this->_min_length) { - return $data; - } - - if (!is_null($this->_block_size)) { - if (!is_null($this->_work_level)) { - return bzcompress($data, $this->_block_size, $this->_work_level); - } else { - return bzcompress($data, $this->_block_size); - } - } - - return bzcompress($data); - } - - /** - */ - function read($data, $key) { - return $data ? bzdecompress($data) : $data; - } - -} - -return 1; - -?> diff --git a/lib/adodb/session/adodb-compress-gzip.php b/lib/adodb/session/adodb-compress-gzip.php deleted file mode 100644 index da8d3d4..0000000 --- a/lib/adodb/session/adodb-compress-gzip.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - - -/* -V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. - Contributed by Ross Smith (adodb@netebb.com). - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Set tabs to 4 for best viewing. - -*/ - -if (!function_exists('gzcompress')) { - trigger_error('gzip functions are not available', E_USER_ERROR); - return 0; -} - -/* -*/ -class ADODB_Compress_Gzip { - /** - */ - var $_level = null; - - /** - */ - var $_min_length = 1; - - /** - */ - function getLevel() { - return $this->_level; - } - - /** - */ - function setLevel($level) { - assert('$level >= 0'); - assert('$level <= 9'); - $this->_level = (int) $level; - } - - /** - */ - function getMinLength() { - return $this->_min_length; - } - - /** - */ - function setMinLength($min_length) { - assert('$min_length >= 0'); - $this->_min_length = (int) $min_length; - } - - /** - */ - function ADODB_Compress_Gzip($level = null, $min_length = null) { - if (!is_null($level)) { - $this->setLevel($level); - } - - if (!is_null($min_length)) { - $this->setMinLength($min_length); - } - } - - /** - */ - function write($data, $key) { - if (strlen($data) < $this->_min_length) { - return $data; - } - - if (!is_null($this->_level)) { - return gzcompress($data, $this->_level); - } else { - return gzcompress($data); - } - } - - /** - */ - function read($data, $key) { - return $data ? gzuncompress($data) : $data; - } - -} - -return 1; - -?>
\ No newline at end of file diff --git a/lib/adodb/session/adodb-cryptsession.php b/lib/adodb/session/adodb-cryptsession.php deleted file mode 100644 index ddf619d..0000000 --- a/lib/adodb/session/adodb-cryptsession.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php - - -/* -V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. - Contributed by Ross Smith (adodb@netebb.com). - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Set tabs to 4 for best viewing. -*/ - -/* - -This file is provided for backwards compatibility purposes - -*/ - -if (!defined('ADODB_SESSION')) { - require_once dirname(__FILE__) . '/adodb-session.php'; -} - -require_once ADODB_SESSION . '/adodb-encrypt-md5.php'; - -ADODB_Session::filter(new ADODB_Encrypt_MD5()); - -?>
\ No newline at end of file diff --git a/lib/adodb/session/adodb-cryptsession2.php b/lib/adodb/session/adodb-cryptsession2.php deleted file mode 100644 index 6334eaf..0000000 --- a/lib/adodb/session/adodb-cryptsession2.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php - - -/* -V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. - Contributed by Ross Smith (adodb@netebb.com). - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Set tabs to 4 for best viewing. -*/ - -/* - -This file is provided for backwards compatibility purposes - -*/ - -if (!defined('ADODB_SESSION')) { - require_once dirname(__FILE__) . '/adodb-session2.php'; -} - -require_once ADODB_SESSION . '/adodb-encrypt-md5.php'; - -ADODB_Session::filter(new ADODB_Encrypt_MD5()); - -?>
\ No newline at end of file diff --git a/lib/adodb/session/adodb-encrypt-mcrypt.php b/lib/adodb/session/adodb-encrypt-mcrypt.php deleted file mode 100644 index a047579..0000000 --- a/lib/adodb/session/adodb-encrypt-mcrypt.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php - - -/* -V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. - Contributed by Ross Smith (adodb@netebb.com). - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Set tabs to 4 for best viewing. - -*/ - -if (!function_exists('mcrypt_encrypt')) { - trigger_error('Mcrypt functions are not available', E_USER_ERROR); - return 0; -} - -/** - */ -class ADODB_Encrypt_MCrypt { - /** - */ - var $_cipher; - - /** - */ - var $_mode; - - /** - */ - var $_source; - - /** - */ - function getCipher() { - return $this->_cipher; - } - - /** - */ - function setCipher($cipher) { - $this->_cipher = $cipher; - } - - /** - */ - function getMode() { - return $this->_mode; - } - - /** - */ - function setMode($mode) { - $this->_mode = $mode; - } - - /** - */ - function getSource() { - return $this->_source; - } - - /** - */ - function setSource($source) { - $this->_source = $source; - } - - /** - */ - function ADODB_Encrypt_MCrypt($cipher = null, $mode = null, $source = null) { - if (!$cipher) { - $cipher = MCRYPT_RIJNDAEL_256; - } - if (!$mode) { - $mode = MCRYPT_MODE_ECB; - } - if (!$source) { - $source = MCRYPT_RAND; - } - - $this->_cipher = $cipher; - $this->_mode = $mode; - $this->_source = $source; - } - - /** - */ - function write($data, $key) { - $iv_size = mcrypt_get_iv_size($this->_cipher, $this->_mode); - $iv = mcrypt_create_iv($iv_size, $this->_source); - return mcrypt_encrypt($this->_cipher, $key, $data, $this->_mode, $iv); - } - - /** - */ - function read($data, $key) { - $iv_size = mcrypt_get_iv_size($this->_cipher, $this->_mode); - $iv = mcrypt_create_iv($iv_size, $this->_source); - $rv = mcrypt_decrypt($this->_cipher, $key, $data, $this->_mode, $iv); - return rtrim($rv, "\0"); - } - -} - -return 1; - -?> diff --git a/lib/adodb/session/adodb-encrypt-md5.php b/lib/adodb/session/adodb-encrypt-md5.php deleted file mode 100644 index 24caa66..0000000 --- a/lib/adodb/session/adodb-encrypt-md5.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -/* -V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. - Contributed by Ross Smith (adodb@netebb.com). - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Set tabs to 4 for best viewing. - -*/ - -// security - hide paths -if (!defined('ADODB_SESSION')) die(); - -include_once ADODB_SESSION . '/crypt.inc.php'; - -/** - */ -class ADODB_Encrypt_MD5 { - /** - */ - function write($data, $key) { - $md5crypt =& new MD5Crypt(); - return $md5crypt->encrypt($data, $key); - } - - /** - */ - function read($data, $key) { - $md5crypt =& new MD5Crypt(); - return $md5crypt->decrypt($data, $key); - } - -} - -return 1; - -?>
\ No newline at end of file diff --git a/lib/adodb/session/adodb-encrypt-secret.php b/lib/adodb/session/adodb-encrypt-secret.php deleted file mode 100644 index cc7e2fb..0000000 --- a/lib/adodb/session/adodb-encrypt-secret.php +++ /dev/null @@ -1,48 +0,0 @@ -<?php - -/* -V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. - Contributed by Ross Smith (adodb@netebb.com). - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Set tabs to 4 for best viewing. - -*/ - -@define('HORDE_BASE', dirname(dirname(dirname(__FILE__))) . '/horde'); - -if (!is_dir(HORDE_BASE)) { - trigger_error(sprintf('Directory not found: \'%s\'', HORDE_BASE), E_USER_ERROR); - return 0; -} - -include_once HORDE_BASE . '/lib/Horde.php'; -include_once HORDE_BASE . '/lib/Secret.php'; - -/** - -NOTE: On Windows 2000 SP4 with PHP 4.3.1, MCrypt 2.4.x, and Apache 1.3.28, -the session didn't work properly. - -This may be resolved with 4.3.3. - - */ -class ADODB_Encrypt_Secret { - /** - */ - function write($data, $key) { - return Secret::write($key, $data); - } - - /** - */ - function read($data, $key) { - return Secret::read($key, $data); - } - -} - -return 1; - -?> diff --git a/lib/adodb/session/adodb-encrypt-sha1.php b/lib/adodb/session/adodb-encrypt-sha1.php deleted file mode 100644 index c876002..0000000 --- a/lib/adodb/session/adodb-encrypt-sha1.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -if (!defined('ADODB_SESSION')) die(); - -include_once ADODB_SESSION . '/crypt.inc.php'; - - -/** - - */ - -class ADODB_Encrypt_SHA1 { - - function write($data, $key) - { - $sha1crypt =& new SHA1Crypt(); - return $sha1crypt->encrypt($data, $key); - - } - - - function read($data, $key) - { - $sha1crypt =& new SHA1Crypt(); - return $sha1crypt->decrypt($data, $key); - - } -} - - - -return 1; -?>
\ No newline at end of file diff --git a/lib/adodb/session/adodb-session-clob.php b/lib/adodb/session/adodb-session-clob.php deleted file mode 100644 index a2cd480..0000000 --- a/lib/adodb/session/adodb-session-clob.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - - -/* -V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. - Contributed by Ross Smith (adodb@netebb.com). - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Set tabs to 4 for best viewing. -*/ - -/* - -This file is provided for backwards compatibility purposes - -*/ - -if (!defined('ADODB_SESSION')) { - require_once dirname(__FILE__) . '/adodb-session.php'; -} -ADODB_Session::clob('CLOB'); - -?>
\ No newline at end of file diff --git a/lib/adodb/session/adodb-session-clob2.php b/lib/adodb/session/adodb-session-clob2.php deleted file mode 100644 index 54b8043..0000000 --- a/lib/adodb/session/adodb-session-clob2.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - - -/* -V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. - Contributed by Ross Smith (adodb@netebb.com). - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Set tabs to 4 for best viewing. -*/ - -/* - -This file is provided for backwards compatibility purposes - -*/ - -if (!defined('ADODB_SESSION')) { - require_once dirname(__FILE__) . '/adodb-session2.php'; -} -ADODB_Session::clob('CLOB'); - -?>
\ No newline at end of file diff --git a/lib/adodb/session/adodb-session.php b/lib/adodb/session/adodb-session.php deleted file mode 100644 index f0054ef..0000000 --- a/lib/adodb/session/adodb-session.php +++ /dev/null @@ -1,934 +0,0 @@ -<?php - - -/* -V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. - Contributed by Ross Smith (adodb@netebb.com). - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Set tabs to 4 for best viewing. -*/ - -/* - You may want to rename the 'data' field to 'session_data' as - 'data' appears to be a reserved word for one or more of the following: - ANSI SQL - IBM DB2 - MS SQL Server - Postgres - SAP - - If you do, then execute: - - ADODB_Session::dataFieldName('session_data'); - -*/ - -if (!defined('_ADODB_LAYER')) { - require realpath(dirname(__FILE__) . '/../adodb.inc.php'); -} - -if (defined('ADODB_SESSION')) return 1; - -define('ADODB_SESSION', dirname(__FILE__)); - - -/* - Unserialize session data manually. See http://phplens.com/lens/lensforum/msgs.php?id=9821 - - From Kerr Schere, to unserialize session data stored via ADOdb. - 1. Pull the session data from the db and loop through it. - 2. Inside the loop, you will need to urldecode the data column. - 3. After urldecode, run the serialized string through this function: - -*/ -function adodb_unserialize( $serialized_string ) -{ - $variables = array( ); - $a = preg_split( "/(\w+)\|/", $serialized_string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE ); - for( $i = 0; $i < count( $a ); $i = $i+2 ) { - $variables[$a[$i]] = unserialize( $a[$i+1] ); - } - return( $variables ); -} - -/* - Thanks Joe Li. See http://phplens.com/lens/lensforum/msgs.php?id=11487&x=1 - Since adodb 4.61. -*/ -function adodb_session_regenerate_id() -{ - $conn =& ADODB_Session::_conn(); - if (!$conn) return false; - - $old_id = session_id(); - if (function_exists('session_regenerate_id')) { - session_regenerate_id(); - } else { - session_id(md5(uniqid(rand(), true))); - $ck = session_get_cookie_params(); - setcookie(session_name(), session_id(), false, $ck['path'], $ck['domain'], $ck['secure']); - //@session_start(); - } - $new_id = session_id(); - $ok =& $conn->Execute('UPDATE '. ADODB_Session::table(). ' SET sesskey='. $conn->qstr($new_id). ' WHERE sesskey='.$conn->qstr($old_id)); - - /* it is possible that the update statement fails due to a collision */ - if (!$ok) { - session_id($old_id); - if (empty($ck)) $ck = session_get_cookie_params(); - setcookie(session_name(), session_id(), false, $ck['path'], $ck['domain'], $ck['secure']); - return false; - } - - return true; -} - -/* - Generate database table for session data - @see http://phplens.com/lens/lensforum/msgs.php?id=12280 - @return 0 if failure, 1 if errors, 2 if successful. - @author Markus Staab http://www.public-4u.de -*/ -function adodb_session_create_table($schemaFile=null,$conn = null) -{ - // set default values - if ($schemaFile===null) $schemaFile = ADODB_SESSION . '/session_schema.xml'; - if ($conn===null) $conn =& ADODB_Session::_conn(); - - if (!$conn) return 0; - - $schema = new adoSchema($conn); - $schema->ParseSchema($schemaFile); - return $schema->ExecuteSchema(); -} - -/*! - \static -*/ -class ADODB_Session { - ///////////////////// - // getter/setter methods - ///////////////////// - - /* - - function Lock($lock=null) - { - static $_lock = false; - - if (!is_null($lock)) $_lock = $lock; - return $lock; - } - */ - /*! - */ - function driver($driver = null) { - static $_driver = 'mysql'; - static $set = false; - - if (!is_null($driver)) { - $_driver = trim($driver); - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_DRIVER'])) { - return $GLOBALS['ADODB_SESSION_DRIVER']; - } - } - - return $_driver; - } - - /*! - */ - function host($host = null) { - static $_host = 'localhost'; - static $set = false; - - if (!is_null($host)) { - $_host = trim($host); - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_CONNECT'])) { - return $GLOBALS['ADODB_SESSION_CONNECT']; - } - } - - return $_host; - } - - /*! - */ - function user($user = null) { - static $_user = 'root'; - static $set = false; - - if (!is_null($user)) { - $_user = trim($user); - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_USER'])) { - return $GLOBALS['ADODB_SESSION_USER']; - } - } - - return $_user; - } - - /*! - */ - function password($password = null) { - static $_password = ''; - static $set = false; - - if (!is_null($password)) { - $_password = $password; - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_PWD'])) { - return $GLOBALS['ADODB_SESSION_PWD']; - } - } - - return $_password; - } - - /*! - */ - function database($database = null) { - static $_database = 'xphplens_2'; - static $set = false; - - if (!is_null($database)) { - $_database = trim($database); - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_DB'])) { - return $GLOBALS['ADODB_SESSION_DB']; - } - } - - return $_database; - } - - /*! - */ - function persist($persist = null) - { - static $_persist = true; - - if (!is_null($persist)) { - $_persist = trim($persist); - } - - return $_persist; - } - - /*! - */ - function lifetime($lifetime = null) { - static $_lifetime; - static $set = false; - - if (!is_null($lifetime)) { - $_lifetime = (int) $lifetime; - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESS_LIFE'])) { - return $GLOBALS['ADODB_SESS_LIFE']; - } - } - if (!$_lifetime) { - $_lifetime = ini_get('session.gc_maxlifetime'); - if ($_lifetime <= 1) { - // bug in PHP 4.0.3 pl 1 -- how about other versions? - //print "<h3>Session Error: PHP.INI setting <i>session.gc_maxlifetime</i>not set: $lifetime</h3>"; - $_lifetime = 1440; - } - } - - return $_lifetime; - } - - /*! - */ - function debug($debug = null) { - static $_debug = false; - static $set = false; - - if (!is_null($debug)) { - $_debug = (bool) $debug; - - $conn = ADODB_Session::_conn(); - if ($conn) { - $conn->debug = $_debug; - } - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESS_DEBUG'])) { - return $GLOBALS['ADODB_SESS_DEBUG']; - } - } - - return $_debug; - } - - /*! - */ - function expireNotify($expire_notify = null) { - static $_expire_notify; - static $set = false; - - if (!is_null($expire_notify)) { - $_expire_notify = $expire_notify; - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_EXPIRE_NOTIFY'])) { - return $GLOBALS['ADODB_SESSION_EXPIRE_NOTIFY']; - } - } - - return $_expire_notify; - } - - /*! - */ - function table($table = null) { - static $_table = 'sessions'; - static $set = false; - - if (!is_null($table)) { - $_table = trim($table); - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_TBL'])) { - return $GLOBALS['ADODB_SESSION_TBL']; - } - } - - return $_table; - } - - /*! - */ - function optimize($optimize = null) { - static $_optimize = false; - static $set = false; - - if (!is_null($optimize)) { - $_optimize = (bool) $optimize; - $set = true; - } elseif (!$set) { - // backwards compatibility - if (defined('ADODB_SESSION_OPTIMIZE')) { - return true; - } - } - - return $_optimize; - } - - /*! - */ - function syncSeconds($sync_seconds = null) { - static $_sync_seconds = 60; - static $set = false; - - if (!is_null($sync_seconds)) { - $_sync_seconds = (int) $sync_seconds; - $set = true; - } elseif (!$set) { - // backwards compatibility - if (defined('ADODB_SESSION_SYNCH_SECS')) { - return ADODB_SESSION_SYNCH_SECS; - } - } - - return $_sync_seconds; - } - - /*! - */ - function clob($clob = null) { - static $_clob = false; - static $set = false; - - if (!is_null($clob)) { - $_clob = strtolower(trim($clob)); - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_USE_LOBS'])) { - return $GLOBALS['ADODB_SESSION_USE_LOBS']; - } - } - - return $_clob; - } - - /*! - */ - function dataFieldName($data_field_name = null) { - static $_data_field_name = 'data'; - - if (!is_null($data_field_name)) { - $_data_field_name = trim($data_field_name); - } - - return $_data_field_name; - } - - /*! - */ - function filter($filter = null) { - static $_filter = array(); - - if (!is_null($filter)) { - if (!is_array($filter)) { - $filter = array($filter); - } - $_filter = $filter; - } - - return $_filter; - } - - /*! - */ - function encryptionKey($encryption_key = null) { - static $_encryption_key = 'CRYPTED ADODB SESSIONS ROCK!'; - - if (!is_null($encryption_key)) { - $_encryption_key = $encryption_key; - } - - return $_encryption_key; - } - - ///////////////////// - // private methods - ///////////////////// - - /*! - */ - function &_conn($conn=null) { - return $GLOBALS['ADODB_SESS_CONN']; - } - - /*! - */ - function _crc($crc = null) { - static $_crc = false; - - if (!is_null($crc)) { - $_crc = $crc; - } - - return $_crc; - } - - /*! - */ - function _init() { - session_module_name('user'); - session_set_save_handler( - array('ADODB_Session', 'open'), - array('ADODB_Session', 'close'), - array('ADODB_Session', 'read'), - array('ADODB_Session', 'write'), - array('ADODB_Session', 'destroy'), - array('ADODB_Session', 'gc') - ); - } - - - /*! - */ - function _sessionKey() { - // use this function to create the encryption key for crypted sessions - // crypt the used key, ADODB_Session::encryptionKey() as key and session_id() as salt - return crypt(ADODB_Session::encryptionKey(), session_id()); - } - - /*! - */ - function _dumprs($rs) { - $conn =& ADODB_Session::_conn(); - $debug = ADODB_Session::debug(); - - if (!$conn) { - return; - } - - if (!$debug) { - return; - } - - if (!$rs) { - echo "<br />\$rs is null or false<br />\n"; - return; - } - - //echo "<br />\nAffected_Rows=",$conn->Affected_Rows(),"<br />\n"; - - if (!is_object($rs)) { - return; - } - - require_once ADODB_SESSION.'/../tohtml.inc.php'; - rs2html($rs); - } - - ///////////////////// - // public methods - ///////////////////// - - function config($driver, $host, $user, $password, $database=false,$options=false) - { - ADODB_Session::driver($driver); - ADODB_Session::host($host); - ADODB_Session::user($user); - ADODB_Session::password($password); - ADODB_Session::database($database); - - if ($driver == 'oci8' || $driver == 'oci8po') $options['lob'] = 'CLOB'; - - if (isset($options['table'])) ADODB_Session::table($options['table']); - if (isset($options['lob'])) ADODB_Session::clob($options['lob']); - if (isset($options['debug'])) ADODB_Session::debug($options['debug']); - } - - /*! - Create the connection to the database. - - If $conn already exists, reuse that connection - */ - function open($save_path, $session_name, $persist = null) - { - $conn =& ADODB_Session::_conn(); - - if ($conn) { - return true; - } - - $database = ADODB_Session::database(); - $debug = ADODB_Session::debug(); - $driver = ADODB_Session::driver(); - $host = ADODB_Session::host(); - $password = ADODB_Session::password(); - $user = ADODB_Session::user(); - - if (!is_null($persist)) { - ADODB_Session::persist($persist); - } else { - $persist = ADODB_Session::persist(); - } - -# these can all be defaulted to in php.ini -# assert('$database'); -# assert('$driver'); -# assert('$host'); - - $conn =& ADONewConnection($driver); - - if ($debug) { - $conn->debug = true; -// ADOConnection::outp( " driver=$driver user=$user pwd=$password db=$database "); - } - - if ($persist) { - switch($persist) { - default: - case 'P': $ok = $conn->PConnect($host, $user, $password, $database); break; - case 'C': $ok = $conn->Connect($host, $user, $password, $database); break; - case 'N': $ok = $conn->NConnect($host, $user, $password, $database); break; - } - } else { - $ok = $conn->Connect($host, $user, $password, $database); - } - - if ($ok) $GLOBALS['ADODB_SESS_CONN'] =& $conn; - else - ADOConnection::outp('<p>Session: connection failed</p>', false); - - - return $ok; - } - - /*! - Close the connection - */ - function close() - { -/* - $conn =& ADODB_Session::_conn(); - if ($conn) $conn->Close(); -*/ - return true; - } - - /* - Slurp in the session variables and return the serialized string - */ - function read($key) - { - $conn =& ADODB_Session::_conn(); - $data = ADODB_Session::dataFieldName(); - $filter = ADODB_Session::filter(); - $table = ADODB_Session::table(); - - if (!$conn) { - return ''; - } - - //assert('$table'); - - $qkey = $conn->quote($key); - $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : ''; - - $sql = "SELECT $data FROM $table WHERE sesskey = $binary $qkey AND expiry >= " . time(); - /* Lock code does not work as it needs to hold transaction within whole page, and we don't know if - developer has commited elsewhere... :( - */ - #if (ADODB_Session::Lock()) - # $rs =& $conn->RowLock($table, "$binary sesskey = $qkey AND expiry >= " . time(), $data); - #else - - $rs =& $conn->Execute($sql); - //ADODB_Session::_dumprs($rs); - if ($rs) { - if ($rs->EOF) { - $v = ''; - } else { - $v = reset($rs->fields); - $filter = array_reverse($filter); - foreach ($filter as $f) { - if (is_object($f)) { - $v = $f->read($v, ADODB_Session::_sessionKey()); - } - } - $v = rawurldecode($v); - } - - $rs->Close(); - - ADODB_Session::_crc(strlen($v) . crc32($v)); - return $v; - } - - return ''; - } - - /*! - Write the serialized data to a database. - - If the data has not been modified since the last read(), we do not write. - */ - function write($key, $val) - { - global $ADODB_SESSION_READONLY; - - if (!empty($ADODB_SESSION_READONLY)) return; - - $clob = ADODB_Session::clob(); - $conn =& ADODB_Session::_conn(); - $crc = ADODB_Session::_crc(); - $data = ADODB_Session::dataFieldName(); - $debug = ADODB_Session::debug(); - $driver = ADODB_Session::driver(); - $expire_notify = ADODB_Session::expireNotify(); - $filter = ADODB_Session::filter(); - $lifetime = ADODB_Session::lifetime(); - $table = ADODB_Session::table(); - - if (!$conn) { - return false; - } - $qkey = $conn->qstr($key); - - //assert('$table'); - - $expiry = time() + $lifetime; - - $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : ''; - - // crc32 optimization since adodb 2.1 - // now we only update expiry date, thx to sebastian thom in adodb 2.32 - if ($crc !== false && $crc == (strlen($val) . crc32($val))) { - if ($debug) { - echo '<p>Session: Only updating date - crc32 not changed</p>'; - } - - $expirevar = ''; - if ($expire_notify) { - $var = reset($expire_notify); - global $$var; - if (isset($$var)) { - $expirevar = $$var; - } - } - - - $sql = "UPDATE $table SET expiry = ".$conn->Param('0').",expireref=".$conn->Param('1')." WHERE $binary sesskey = ".$conn->Param('2')." AND expiry >= ".$conn->Param('3'); - $rs =& $conn->Execute($sql,array($expiry,$expirevar,$key,time())); - return true; - } - $val = rawurlencode($val); - foreach ($filter as $f) { - if (is_object($f)) { - $val = $f->write($val, ADODB_Session::_sessionKey()); - } - } - - $arr = array('sesskey' => $key, 'expiry' => $expiry, $data => $val, 'expireref' => ''); - if ($expire_notify) { - $var = reset($expire_notify); - global $$var; - if (isset($$var)) { - $arr['expireref'] = $$var; - } - } - - if (!$clob) { // no lobs, simply use replace() - $arr[$data] = $conn->qstr($val); - $rs = $conn->Replace($table, $arr, 'sesskey', $autoQuote = true); - - } else { - // what value shall we insert/update for lob row? - switch ($driver) { - // empty_clob or empty_lob for oracle dbs - case 'oracle': - case 'oci8': - case 'oci8po': - case 'oci805': - $lob_value = sprintf('empty_%s()', strtolower($clob)); - break; - - // null for all other - default: - $lob_value = 'null'; - break; - } - - $conn->StartTrans(); - $expiryref = $conn->qstr($arr['expireref']); - // do we insert or update? => as for sesskey - $rs =& $conn->Execute("SELECT COUNT(*) AS cnt FROM $table WHERE $binary sesskey = $qkey"); - if ($rs && reset($rs->fields) > 0) { - $sql = "UPDATE $table SET expiry = $expiry, $data = $lob_value, expireref=$expiryref WHERE sesskey = $qkey"; - } else { - $sql = "INSERT INTO $table (expiry, $data, sesskey,expireref) VALUES ($expiry, $lob_value, $qkey,$expiryref)"; - } - if ($rs)$rs->Close(); - - - $err = ''; - $rs1 =& $conn->Execute($sql); - if (!$rs1) $err = $conn->ErrorMsg()."\n"; - - $rs2 =& $conn->UpdateBlob($table, $data, $val, " sesskey=$qkey", strtoupper($clob)); - if (!$rs2) $err .= $conn->ErrorMsg()."\n"; - - $rs = ($rs && $rs2) ? true : false; - $conn->CompleteTrans(); - } - - if (!$rs) { - ADOConnection::outp('<p>Session Replace: ' . $conn->ErrorMsg() . '</p>', false); - return false; - } else { - // bug in access driver (could be odbc?) means that info is not committed - // properly unless select statement executed in Win2000 - if ($conn->databaseType == 'access') { - $sql = "SELECT sesskey FROM $table WHERE $binary sesskey = $qkey"; - $rs =& $conn->Execute($sql); - ADODB_Session::_dumprs($rs); - if ($rs) { - $rs->Close(); - } - } - }/* - if (ADODB_Session::Lock()) { - $conn->CommitTrans(); - }*/ - return $rs ? true : false; - } - - /*! - */ - function destroy($key) { - $conn =& ADODB_Session::_conn(); - $table = ADODB_Session::table(); - $expire_notify = ADODB_Session::expireNotify(); - - if (!$conn) { - return false; - } - - //assert('$table'); - - $qkey = $conn->quote($key); - $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : ''; - - if ($expire_notify) { - reset($expire_notify); - $fn = next($expire_notify); - $savem = $conn->SetFetchMode(ADODB_FETCH_NUM); - $sql = "SELECT expireref, sesskey FROM $table WHERE $binary sesskey = $qkey"; - $rs =& $conn->Execute($sql); - ADODB_Session::_dumprs($rs); - $conn->SetFetchMode($savem); - if (!$rs) { - return false; - } - if (!$rs->EOF) { - $ref = $rs->fields[0]; - $key = $rs->fields[1]; - //assert('$ref'); - //assert('$key'); - $fn($ref, $key); - } - $rs->Close(); - } - - $sql = "DELETE FROM $table WHERE $binary sesskey = $qkey"; - $rs =& $conn->Execute($sql); - ADODB_Session::_dumprs($rs); - - return $rs ? true : false; - } - - /*! - */ - function gc($maxlifetime) - { - $conn =& ADODB_Session::_conn(); - $debug = ADODB_Session::debug(); - $expire_notify = ADODB_Session::expireNotify(); - $optimize = ADODB_Session::optimize(); - $sync_seconds = ADODB_Session::syncSeconds(); - $table = ADODB_Session::table(); - - if (!$conn) { - return false; - } - - - $time = time(); - $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : ''; - - if ($expire_notify) { - reset($expire_notify); - $fn = next($expire_notify); - $savem = $conn->SetFetchMode(ADODB_FETCH_NUM); - $sql = "SELECT expireref, sesskey FROM $table WHERE expiry < $time"; - $rs =& $conn->Execute($sql); - ADODB_Session::_dumprs($rs); - $conn->SetFetchMode($savem); - if ($rs) { - $conn->StartTrans(); - $keys = array(); - while (!$rs->EOF) { - $ref = $rs->fields[0]; - $key = $rs->fields[1]; - $fn($ref, $key); - $del = $conn->Execute("DELETE FROM $table WHERE sesskey=".$conn->Param('0'),array($key)); - $rs->MoveNext(); - } - $rs->Close(); - - $conn->CompleteTrans(); - } - } else { - - if (1) { - $sql = "SELECT sesskey FROM $table WHERE expiry < $time"; - $arr =& $conn->GetAll($sql); - foreach ($arr as $row) { - $sql2 = "DELETE FROM $table WHERE sesskey=".$conn->Param('0'); - $conn->Execute($sql2,array($row[0])); - } - } else { - $sql = "DELETE FROM $table WHERE expiry < $time"; - $rs =& $conn->Execute($sql); - ADODB_Session::_dumprs($rs); - if ($rs) $rs->Close(); - } - if ($debug) { - ADOConnection::outp("<p><b>Garbage Collection</b>: $sql</p>"); - } - } - - // suggested by Cameron, "GaM3R" <gamr@outworld.cx> - if ($optimize) { - $driver = ADODB_Session::driver(); - - if (preg_match('/mysql/i', $driver)) { - $sql = "OPTIMIZE TABLE $table"; - } - if (preg_match('/postgres/i', $driver)) { - $sql = "VACUUM $table"; - } - if (!empty($sql)) { - $conn->Execute($sql); - } - } - - if ($sync_seconds) { - $sql = 'SELECT '; - if ($conn->dataProvider === 'oci8') { - $sql .= "TO_CHAR({$conn->sysTimeStamp}, 'RRRR-MM-DD HH24:MI:SS')"; - } else { - $sql .= $conn->sysTimeStamp; - } - $sql .= " FROM $table"; - - $rs =& $conn->SelectLimit($sql, 1); - if ($rs && !$rs->EOF) { - $dbts = reset($rs->fields); - $rs->Close(); - $dbt = $conn->UnixTimeStamp($dbts); - $t = time(); - - if (abs($dbt - $t) >= $sync_seconds) { - $msg = __FILE__ . - ": Server time for webserver {$_SERVER['HTTP_HOST']} not in synch with database: " . - " database=$dbt ($dbts), webserver=$t (diff=". (abs($dbt - $t) / 60) . ' minutes)'; - error_log($msg); - if ($debug) { - ADOConnection::outp("<p>$msg</p>"); - } - } - } - } - - return true; - } -} - -ADODB_Session::_init(); -if (empty($ADODB_SESSION_READONLY)) - register_shutdown_function('session_write_close'); - -// for backwards compatability only -function adodb_sess_open($save_path, $session_name, $persist = true) { - return ADODB_Session::open($save_path, $session_name, $persist); -} - -// for backwards compatability only -function adodb_sess_gc($t) -{ - return ADODB_Session::gc($t); -} - -?>
\ No newline at end of file diff --git a/lib/adodb/session/adodb-session2.php b/lib/adodb/session/adodb-session2.php deleted file mode 100644 index c5932b6..0000000 --- a/lib/adodb/session/adodb-session2.php +++ /dev/null @@ -1,941 +0,0 @@ -<?php - - -/* -V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. - Contributed by Ross Smith (adodb@netebb.com). - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Set tabs to 4 for best viewing. - - -*/ - -/* - -CREATE Table SCripts - -Oracle -====== - -CREATE TABLE SESSIONS2 -( - SESSKEY VARCHAR2(48 BYTE) NOT NULL, - EXPIRY DATE NOT NULL, - EXPIREREF VARCHAR2(200 BYTE), - CREATED DATE NOT NULL, - MODIFIED DATE NOT NULL, - SESSDATA CLOB, - PRIMARY KEY(SESSKEY) -); - - -CREATE INDEX SESS2_EXPIRY ON SESSIONS2(EXPIRY); -CREATE UNIQUE INDEX SESS2_PK ON SESSIONS2(SESSKEY); -CREATE INDEX SESS2_EXP_REF ON SESSIONS2(EXPIREREF); - - - - MySQL - ===== - -CREATE TABLE sessions2( - sesskey VARCHAR( 64 ) NOT NULL DEFAULT '', - expiry TIMESTAMP NOT NULL , - expireref VARCHAR( 250 ) DEFAULT '', - created TIMESTAMP NOT NULL , - modified TIMESTAMP NOT NULL , - sessdata LONGTEXT DEFAULT '', - PRIMARY KEY ( sesskey ) , - INDEX sess2_expiry( expiry ), - INDEX sess2_expireref( expireref ) -) - - -*/ - -if (!defined('_ADODB_LAYER')) { - require realpath(dirname(__FILE__) . '/../adodb.inc.php'); -} - -if (defined('ADODB_SESSION')) return 1; - -define('ADODB_SESSION', dirname(__FILE__)); -define('ADODB_SESSION2', ADODB_SESSION); - -/* - Unserialize session data manually. See http://phplens.com/lens/lensforum/msgs.php?id=9821 - - From Kerr Schere, to unserialize session data stored via ADOdb. - 1. Pull the session data from the db and loop through it. - 2. Inside the loop, you will need to urldecode the data column. - 3. After urldecode, run the serialized string through this function: - -*/ -function adodb_unserialize( $serialized_string ) -{ - $variables = array( ); - $a = preg_split( "/(\w+)\|/", $serialized_string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE ); - for( $i = 0; $i < count( $a ); $i = $i+2 ) { - $variables[$a[$i]] = unserialize( $a[$i+1] ); - } - return( $variables ); -} - -/* - Thanks Joe Li. See http://phplens.com/lens/lensforum/msgs.php?id=11487&x=1 - Since adodb 4.61. -*/ -function adodb_session_regenerate_id() -{ - $conn =& ADODB_Session::_conn(); - if (!$conn) return false; - - $old_id = session_id(); - if (function_exists('session_regenerate_id')) { - session_regenerate_id(); - } else { - session_id(md5(uniqid(rand(), true))); - $ck = session_get_cookie_params(); - setcookie(session_name(), session_id(), false, $ck['path'], $ck['domain'], $ck['secure']); - //@session_start(); - } - $new_id = session_id(); - $ok =& $conn->Execute('UPDATE '. ADODB_Session::table(). ' SET sesskey='. $conn->qstr($new_id). ' WHERE sesskey='.$conn->qstr($old_id)); - - /* it is possible that the update statement fails due to a collision */ - if (!$ok) { - session_id($old_id); - if (empty($ck)) $ck = session_get_cookie_params(); - setcookie(session_name(), session_id(), false, $ck['path'], $ck['domain'], $ck['secure']); - return false; - } - - return true; -} - -/* - Generate database table for session data - @see http://phplens.com/lens/lensforum/msgs.php?id=12280 - @return 0 if failure, 1 if errors, 2 if successful. - @author Markus Staab http://www.public-4u.de -*/ -function adodb_session_create_table($schemaFile=null,$conn = null) -{ - // set default values - if ($schemaFile===null) $schemaFile = ADODB_SESSION . '/session_schema2.xml'; - if ($conn===null) $conn =& ADODB_Session::_conn(); - - if (!$conn) return 0; - - $schema = new adoSchema($conn); - $schema->ParseSchema($schemaFile); - return $schema->ExecuteSchema(); -} - -/*! - \static -*/ -class ADODB_Session { - ///////////////////// - // getter/setter methods - ///////////////////// - - /* - - function Lock($lock=null) - { - static $_lock = false; - - if (!is_null($lock)) $_lock = $lock; - return $lock; - } - */ - /*! - */ - function driver($driver = null) - { - static $_driver = 'mysql'; - static $set = false; - - if (!is_null($driver)) { - $_driver = trim($driver); - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_DRIVER'])) { - return $GLOBALS['ADODB_SESSION_DRIVER']; - } - } - - return $_driver; - } - - /*! - */ - function host($host = null) { - static $_host = 'localhost'; - static $set = false; - - if (!is_null($host)) { - $_host = trim($host); - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_CONNECT'])) { - return $GLOBALS['ADODB_SESSION_CONNECT']; - } - } - - return $_host; - } - - /*! - */ - function user($user = null) - { - static $_user = 'root'; - static $set = false; - - if (!is_null($user)) { - $_user = trim($user); - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_USER'])) { - return $GLOBALS['ADODB_SESSION_USER']; - } - } - - return $_user; - } - - /*! - */ - function password($password = null) - { - static $_password = ''; - static $set = false; - - if (!is_null($password)) { - $_password = $password; - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_PWD'])) { - return $GLOBALS['ADODB_SESSION_PWD']; - } - } - - return $_password; - } - - /*! - */ - function database($database = null) - { - static $_database = ''; - static $set = false; - - if (!is_null($database)) { - $_database = trim($database); - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_DB'])) { - return $GLOBALS['ADODB_SESSION_DB']; - } - } - return $_database; - } - - /*! - */ - function persist($persist = null) - { - static $_persist = true; - - if (!is_null($persist)) { - $_persist = trim($persist); - } - - return $_persist; - } - - /*! - */ - function lifetime($lifetime = null) - { - static $_lifetime; - static $set = false; - - if (!is_null($lifetime)) { - $_lifetime = (int) $lifetime; - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESS_LIFE'])) { - return $GLOBALS['ADODB_SESS_LIFE']; - } - } - if (!$_lifetime) { - $_lifetime = ini_get('session.gc_maxlifetime'); - if ($_lifetime <= 1) { - // bug in PHP 4.0.3 pl 1 -- how about other versions? - //print "<h3>Session Error: PHP.INI setting <i>session.gc_maxlifetime</i>not set: $lifetime</h3>"; - $_lifetime = 1440; - } - } - - return $_lifetime; - } - - /*! - */ - function debug($debug = null) - { - static $_debug = false; - static $set = false; - - if (!is_null($debug)) { - $_debug = (bool) $debug; - - $conn = ADODB_Session::_conn(); - if ($conn) { - $conn->debug = $_debug; - } - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESS_DEBUG'])) { - return $GLOBALS['ADODB_SESS_DEBUG']; - } - } - - return $_debug; - } - - /*! - */ - function expireNotify($expire_notify = null) - { - static $_expire_notify; - static $set = false; - - if (!is_null($expire_notify)) { - $_expire_notify = $expire_notify; - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_EXPIRE_NOTIFY'])) { - return $GLOBALS['ADODB_SESSION_EXPIRE_NOTIFY']; - } - } - - return $_expire_notify; - } - - /*! - */ - function table($table = null) - { - static $_table = 'sessions2'; - static $set = false; - - if (!is_null($table)) { - $_table = trim($table); - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_TBL'])) { - return $GLOBALS['ADODB_SESSION_TBL']; - } - } - - return $_table; - } - - /*! - */ - function optimize($optimize = null) - { - static $_optimize = false; - static $set = false; - - if (!is_null($optimize)) { - $_optimize = (bool) $optimize; - $set = true; - } elseif (!$set) { - // backwards compatibility - if (defined('ADODB_SESSION_OPTIMIZE')) { - return true; - } - } - - return $_optimize; - } - - /*! - */ - function syncSeconds($sync_seconds = null) { - //echo ("<p>WARNING: ADODB_SESSION::syncSeconds is longer used, please remove this function for your code</p>"); - - return 0; - } - - /*! - */ - function clob($clob = null) { - static $_clob = false; - static $set = false; - - if (!is_null($clob)) { - $_clob = strtolower(trim($clob)); - $set = true; - } elseif (!$set) { - // backwards compatibility - if (isset($GLOBALS['ADODB_SESSION_USE_LOBS'])) { - return $GLOBALS['ADODB_SESSION_USE_LOBS']; - } - } - - return $_clob; - } - - /*! - */ - function dataFieldName($data_field_name = null) { - //echo ("<p>WARNING: ADODB_SESSION::dataFieldName() is longer used, please remove this function for your code</p>"); - return ''; - } - - /*! - */ - function filter($filter = null) { - static $_filter = array(); - - if (!is_null($filter)) { - if (!is_array($filter)) { - $filter = array($filter); - } - $_filter = $filter; - } - - return $_filter; - } - - /*! - */ - function encryptionKey($encryption_key = null) { - static $_encryption_key = 'CRYPTED ADODB SESSIONS ROCK!'; - - if (!is_null($encryption_key)) { - $_encryption_key = $encryption_key; - } - - return $_encryption_key; - } - - ///////////////////// - // private methods - ///////////////////// - - /*! - */ - function &_conn($conn=null) { - return $GLOBALS['ADODB_SESS_CONN']; - } - - /*! - */ - function _crc($crc = null) { - static $_crc = false; - - if (!is_null($crc)) { - $_crc = $crc; - } - - return $_crc; - } - - /*! - */ - function _init() { - session_module_name('user'); - session_set_save_handler( - array('ADODB_Session', 'open'), - array('ADODB_Session', 'close'), - array('ADODB_Session', 'read'), - array('ADODB_Session', 'write'), - array('ADODB_Session', 'destroy'), - array('ADODB_Session', 'gc') - ); - } - - - /*! - */ - function _sessionKey() { - // use this function to create the encryption key for crypted sessions - // crypt the used key, ADODB_Session::encryptionKey() as key and session_id() as salt - return crypt(ADODB_Session::encryptionKey(), session_id()); - } - - /*! - */ - function _dumprs($rs) { - $conn =& ADODB_Session::_conn(); - $debug = ADODB_Session::debug(); - - if (!$conn) { - return; - } - - if (!$debug) { - return; - } - - if (!$rs) { - echo "<br />\$rs is null or false<br />\n"; - return; - } - - //echo "<br />\nAffected_Rows=",$conn->Affected_Rows(),"<br />\n"; - - if (!is_object($rs)) { - return; - } - - require_once ADODB_SESSION.'/../tohtml.inc.php'; - rs2html($rs); - } - - ///////////////////// - // public methods - ///////////////////// - - function config($driver, $host, $user, $password, $database=false,$options=false) - { - ADODB_Session::driver($driver); - ADODB_Session::host($host); - ADODB_Session::user($user); - ADODB_Session::password($password); - ADODB_Session::database($database); - - if ($driver == 'oci8' || $driver == 'oci8po') $options['lob'] = 'CLOB'; - - if (isset($options['table'])) ADODB_Session::table($options['table']); - if (isset($options['lob'])) ADODB_Session::clob($options['lob']); - if (isset($options['debug'])) ADODB_Session::debug($options['debug']); - } - - /*! - Create the connection to the database. - - If $conn already exists, reuse that connection - */ - function open($save_path, $session_name, $persist = null) - { - $conn =& ADODB_Session::_conn(); - - if ($conn) { - return true; - } - - $database = ADODB_Session::database(); - $debug = ADODB_Session::debug(); - $driver = ADODB_Session::driver(); - $host = ADODB_Session::host(); - $password = ADODB_Session::password(); - $user = ADODB_Session::user(); - - if (!is_null($persist)) { - ADODB_Session::persist($persist); - } else { - $persist = ADODB_Session::persist(); - } - -# these can all be defaulted to in php.ini -# assert('$database'); -# assert('$driver'); -# assert('$host'); - - $conn =& ADONewConnection($driver); - - if ($debug) { - $conn->debug = true; - ADOConnection::outp( " driver=$driver user=$user db=$database "); - } - - if ($persist) { - switch($persist) { - default: - case 'P': $ok = $conn->PConnect($host, $user, $password, $database); break; - case 'C': $ok = $conn->Connect($host, $user, $password, $database); break; - case 'N': $ok = $conn->NConnect($host, $user, $password, $database); break; - } - } else { - $ok = $conn->Connect($host, $user, $password, $database); - } - - if ($ok) $GLOBALS['ADODB_SESS_CONN'] =& $conn; - else - ADOConnection::outp('<p>Session: connection failed</p>', false); - - - return $ok; - } - - /*! - Close the connection - */ - function close() - { -/* - $conn =& ADODB_Session::_conn(); - if ($conn) $conn->Close(); -*/ - return true; - } - - /* - Slurp in the session variables and return the serialized string - */ - function read($key) - { - $conn =& ADODB_Session::_conn(); - $filter = ADODB_Session::filter(); - $table = ADODB_Session::table(); - - if (!$conn) { - return ''; - } - - //assert('$table'); - - $qkey = $conn->quote($key); - $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : ''; - - $sql = "SELECT sessdata FROM $table WHERE sesskey = $binary $qkey AND expiry >= " . $conn->sysTimeStamp; - /* Lock code does not work as it needs to hold transaction within whole page, and we don't know if - developer has commited elsewhere... :( - */ - #if (ADODB_Session::Lock()) - # $rs =& $conn->RowLock($table, "$binary sesskey = $qkey AND expiry >= " . time(), sessdata); - #else - - $rs =& $conn->Execute($sql); - //ADODB_Session::_dumprs($rs); - if ($rs) { - if ($rs->EOF) { - $v = ''; - } else { - $v = reset($rs->fields); - $filter = array_reverse($filter); - foreach ($filter as $f) { - if (is_object($f)) { - $v = $f->read($v, ADODB_Session::_sessionKey()); - } - } - $v = rawurldecode($v); - } - - $rs->Close(); - - ADODB_Session::_crc(strlen($v) . crc32($v)); - return $v; - } - - return ''; - } - - /*! - Write the serialized data to a database. - - If the data has not been modified since the last read(), we do not write. - */ - function write($key, $val) - { - global $ADODB_SESSION_READONLY; - - if (!empty($ADODB_SESSION_READONLY)) return; - - $clob = ADODB_Session::clob(); - $conn =& ADODB_Session::_conn(); - $crc = ADODB_Session::_crc(); - $debug = ADODB_Session::debug(); - $driver = ADODB_Session::driver(); - $expire_notify = ADODB_Session::expireNotify(); - $filter = ADODB_Session::filter(); - $lifetime = ADODB_Session::lifetime(); - $table = ADODB_Session::table(); - - if (!$conn) { - return false; - } - - $sysTimeStamp = $conn->sysTimeStamp; - - //assert('$table'); - - $expiry = $conn->OffsetDate($lifetime/(24*3600),$sysTimeStamp); - - $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : ''; - - // crc32 optimization since adodb 2.1 - // now we only update expiry date, thx to sebastian thom in adodb 2.32 - if ($crc !== false && $crc == (strlen($val) . crc32($val))) { - if ($debug) { - echo '<p>Session: Only updating date - crc32 not changed</p>'; - } - - $expirevar = ''; - if ($expire_notify) { - $var = reset($expire_notify); - global $$var; - if (isset($$var)) { - $expirevar = $$var; - } - } - - - $sql = "UPDATE $table SET expiry = $expiry ,expireref=".$conn->Param('0').", modified = $sysTimeStamp WHERE $binary sesskey = ".$conn->Param('1')." AND expiry >= $sysTimeStamp"; - $rs =& $conn->Execute($sql,array($expirevar,$key)); - return true; - } - $val = rawurlencode($val); - foreach ($filter as $f) { - if (is_object($f)) { - $val = $f->write($val, ADODB_Session::_sessionKey()); - } - } - - $expireref = ''; - if ($expire_notify) { - $var = reset($expire_notify); - global $$var; - if (isset($$var)) { - $expireref = $$var; - } - } - - if (!$clob) { // no lobs, simply use replace() - $rs =& $conn->Execute("SELECT COUNT(*) AS cnt FROM $table WHERE $binary sesskey = ".$conn->Param(0),array($key)); - if ($rs) $rs->Close(); - - if ($rs && reset($rs->fields) > 0) { - $sql = "UPDATE $table SET expiry=$expiry, sessdata=".$conn->Param(0).", expireref= ".$conn->Param(1).",modified=$sysTimeStamp WHERE sesskey = ".$conn->Param('2'); - - } else { - $sql = "INSERT INTO $table (expiry, sessdata, expireref, sesskey, created, modified) - VALUES ($expiry,".$conn->Param('0').", ". $conn->Param('1').", ".$conn->Param('2').", $sysTimeStamp, $sysTimeStamp)"; - } - - - $rs =& $conn->Execute($sql,array($val,$expireref,$key)); - - } else { - // what value shall we insert/update for lob row? - switch ($driver) { - // empty_clob or empty_lob for oracle dbs - case 'oracle': - case 'oci8': - case 'oci8po': - case 'oci805': - $lob_value = sprintf('empty_%s()', strtolower($clob)); - break; - - // null for all other - default: - $lob_value = 'null'; - break; - } - - $conn->StartTrans(); - - $rs =& $conn->Execute("SELECT COUNT(*) AS cnt FROM $table WHERE $binary sesskey = ".$conn->Param(0),array($key)); - if ($rs) $rs->Close(); - - if ($rs && reset($rs->fields) > 0) { - $sql = "UPDATE $table SET expiry=$expiry, sessdata=$lob_value, expireref= ".$conn->Param(0).",modified=$sysTimeStamp WHERE sesskey = ".$conn->Param('1'); - - } else { - $sql = "INSERT INTO $table (expiry, sessdata, expireref, sesskey, created, modified) - VALUES ($expiry,$lob_value, ". $conn->Param('0').", ".$conn->Param('1').", $sysTimeStamp, $sysTimeStamp)"; - } - - $rs =& $conn->Execute($sql,array($expireref,$key)); - - $qkey = $conn->qstr($key); - $rs2 =& $conn->UpdateBlob($table, 'sessdata', $val, " sesskey=$qkey", strtoupper($clob)); - $rs = @$conn->CompleteTrans(); - - - } - - if (!$rs) { - ADOConnection::outp('<p>Session Replace: ' . $conn->ErrorMsg() . '</p>', false); - return false; - } else { - // bug in access driver (could be odbc?) means that info is not committed - // properly unless select statement executed in Win2000 - if ($conn->databaseType == 'access') { - $sql = "SELECT sesskey FROM $table WHERE $binary sesskey = $qkey"; - $rs =& $conn->Execute($sql); - ADODB_Session::_dumprs($rs); - if ($rs) { - $rs->Close(); - } - } - }/* - if (ADODB_Session::Lock()) { - $conn->CommitTrans(); - }*/ - return $rs ? true : false; - } - - /*! - */ - function destroy($key) { - $conn =& ADODB_Session::_conn(); - $table = ADODB_Session::table(); - $expire_notify = ADODB_Session::expireNotify(); - - if (!$conn) { - return false; - } - - //assert('$table'); - - $qkey = $conn->quote($key); - $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : ''; - - if ($expire_notify) { - reset($expire_notify); - $fn = next($expire_notify); - $savem = $conn->SetFetchMode(ADODB_FETCH_NUM); - $sql = "SELECT expireref, sesskey FROM $table WHERE $binary sesskey = $qkey"; - $rs =& $conn->Execute($sql); - ADODB_Session::_dumprs($rs); - $conn->SetFetchMode($savem); - if (!$rs) { - return false; - } - if (!$rs->EOF) { - $ref = $rs->fields[0]; - $key = $rs->fields[1]; - //assert('$ref'); - //assert('$key'); - $fn($ref, $key); - } - $rs->Close(); - } - - $sql = "DELETE FROM $table WHERE $binary sesskey = $qkey"; - $rs =& $conn->Execute($sql); - ADODB_Session::_dumprs($rs); - if ($rs) { - $rs->Close(); - } - - return $rs ? true : false; - } - - /*! - */ - function gc($maxlifetime) - { - $conn =& ADODB_Session::_conn(); - $debug = ADODB_Session::debug(); - $expire_notify = ADODB_Session::expireNotify(); - $optimize = ADODB_Session::optimize(); - $table = ADODB_Session::table(); - - if (!$conn) { - return false; - } - - //assert('$table'); - - $time = $conn->sysTimeStamp; - $binary = $conn->dataProvider === 'mysql' ? '/*! BINARY */' : ''; - - if ($expire_notify) { - reset($expire_notify); - $fn = next($expire_notify); - $savem = $conn->SetFetchMode(ADODB_FETCH_NUM); - $sql = "SELECT expireref, sesskey FROM $table WHERE expiry < $time"; - $rs =& $conn->Execute($sql); - ADODB_Session::_dumprs($rs); - $conn->SetFetchMode($savem); - if ($rs) { - $conn->StartTrans(); - $keys = array(); - while (!$rs->EOF) { - $ref = $rs->fields[0]; - $key = $rs->fields[1]; - $fn($ref, $key); - $del = $conn->Execute("DELETE FROM $table WHERE sesskey=".$conn->Param('0'),array($key)); - $rs->MoveNext(); - } - $rs->Close(); - - $conn->CompleteTrans(); - } - } else { - - if (0) { - $sql = "SELECT sesskey FROM $table WHERE expiry < $time"; - $arr =& $conn->GetAll($sql); - foreach ($arr as $row) { - $sql2 = "DELETE FROM $table WHERE sesskey=".$conn->Param('0'); - $conn->Execute($sql2,array($row[0])); - } - } else { - $sql = "DELETE FROM $table WHERE expiry < $time"; - $rs =& $conn->Execute($sql); - ADODB_Session::_dumprs($rs); - if ($rs) $rs->Close(); - } - if ($debug) { - ADOConnection::outp("<p><b>Garbage Collection</b>: $sql</p>"); - } - } - - // suggested by Cameron, "GaM3R" <gamr@outworld.cx> - if ($optimize) { - $driver = ADODB_Session::driver(); - - if (preg_match('/mysql/i', $driver)) { - $sql = "OPTIMIZE TABLE $table"; - } - if (preg_match('/postgres/i', $driver)) { - $sql = "VACUUM $table"; - } - if (!empty($sql)) { - $conn->Execute($sql); - } - } - - - return true; - } -} - -ADODB_Session::_init(); -if (empty($ADODB_SESSION_READONLY)) - register_shutdown_function('session_write_close'); - -// for backwards compatability only -function adodb_sess_open($save_path, $session_name, $persist = true) { - return ADODB_Session::open($save_path, $session_name, $persist); -} - -// for backwards compatability only -function adodb_sess_gc($t) -{ - return ADODB_Session::gc($t); -} - -?>
\ No newline at end of file diff --git a/lib/adodb/session/crypt.inc.php b/lib/adodb/session/crypt.inc.php deleted file mode 100644 index 41cb06a..0000000 --- a/lib/adodb/session/crypt.inc.php +++ /dev/null @@ -1,161 +0,0 @@ -<?php -// Session Encryption by Ari Kuorikoski <ari.kuorikoski@finebyte.com> -class MD5Crypt{ - function keyED($txt,$encrypt_key) - { - $encrypt_key = md5($encrypt_key); - $ctr=0; - $tmp = ""; - for ($i=0;$i<strlen($txt);$i++){ - if ($ctr==strlen($encrypt_key)) $ctr=0; - $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1); - $ctr++; - } - return $tmp; - } - - function Encrypt($txt,$key) - { - srand((double)microtime()*1000000); - $encrypt_key = md5(rand(0,32000)); - $ctr=0; - $tmp = ""; - for ($i=0;$i<strlen($txt);$i++) - { - if ($ctr==strlen($encrypt_key)) $ctr=0; - $tmp.= substr($encrypt_key,$ctr,1) . - (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1)); - $ctr++; - } - return base64_encode($this->keyED($tmp,$key)); - } - - function Decrypt($txt,$key) - { - $txt = $this->keyED(base64_decode($txt),$key); - $tmp = ""; - for ($i=0;$i<strlen($txt);$i++){ - $md5 = substr($txt,$i,1); - $i++; - $tmp.= (substr($txt,$i,1) ^ $md5); - } - return $tmp; - } - - function RandPass() - { - $randomPassword = ""; - srand((double)microtime()*1000000); - for($i=0;$i<8;$i++) - { - $randnumber = rand(48,120); - - while (($randnumber >= 58 && $randnumber <= 64) || ($randnumber >= 91 && $randnumber <= 96)) - { - $randnumber = rand(48,120); - } - - $randomPassword .= chr($randnumber); - } - return $randomPassword; - } - -} - - -class SHA1Crypt{ - - function keyED($txt,$encrypt_key) - { - - $encrypt_key = sha1($encrypt_key); - $ctr=0; - $tmp = ""; - - for ($i=0;$i<strlen($txt);$i++){ - if ($ctr==strlen($encrypt_key)) $ctr=0; - $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1); - $ctr++; - } - return $tmp; - - } - - - - function Encrypt($txt,$key) - { - - srand((double)microtime()*1000000); - $encrypt_key = sha1(rand(0,32000)); - $ctr=0; - $tmp = ""; - - for ($i=0;$i<strlen($txt);$i++) - - { - - if ($ctr==strlen($encrypt_key)) $ctr=0; - - $tmp.= substr($encrypt_key,$ctr,1) . - - (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1)); - - $ctr++; - - } - - return base64_encode($this->keyED($tmp,$key)); - - } - - - - function Decrypt($txt,$key) - { - - $txt = $this->keyED(base64_decode($txt),$key); - - $tmp = ""; - - for ($i=0;$i<strlen($txt);$i++){ - - $sha1 = substr($txt,$i,1); - - $i++; - - $tmp.= (substr($txt,$i,1) ^ $sha1); - - } - - return $tmp; - } - - - - function RandPass() - { - $randomPassword = ""; - srand((double)microtime()*1000000); - - for($i=0;$i<8;$i++) - { - - $randnumber = rand(48,120); - - while (($randnumber >= 58 && $randnumber <= 64) || ($randnumber >= 91 && $randnumber <= 96)) - { - $randnumber = rand(48,120); - } - - $randomPassword .= chr($randnumber); - } - - return $randomPassword; - - } - - - -} -?>
\ No newline at end of file diff --git a/lib/adodb/session/old/adodb-cryptsession.php b/lib/adodb/session/old/adodb-cryptsession.php deleted file mode 100644 index 40ce283..0000000 --- a/lib/adodb/session/old/adodb-cryptsession.php +++ /dev/null @@ -1,324 +0,0 @@ -<?php -/* -V4.94 23 Jan 2007 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved. - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Made table name configurable - by David Johnson djohnson@inpro.net - Encryption by Ari Kuorikoski <ari.kuorikoski@finebyte.com> - - Set tabs to 4 for best viewing. - - Latest version of ADODB is available at http://php.weblogs.com/adodb - ====================================================================== - - This file provides PHP4 session management using the ADODB database -wrapper library. - - Example - ======= - - include('adodb.inc.php'); - #---------------------------------# - include('adodb-cryptsession.php'); - #---------------------------------# - session_start(); - session_register('AVAR'); - $_SESSION['AVAR'] += 1; - print " --- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>"; - - - Installation - ============ - 1. Create a new database in MySQL or Access "sessions" like -so: - - create table sessions ( - SESSKEY char(32) not null, - EXPIRY int(11) unsigned not null, - EXPIREREF varchar(64), - DATA CLOB, - primary key (sesskey) - ); - - 2. Then define the following parameters. You can either modify - this file, or define them before this file is included: - - $ADODB_SESSION_DRIVER='database driver, eg. mysql or ibase'; - $ADODB_SESSION_CONNECT='server to connect to'; - $ADODB_SESSION_USER ='user'; - $ADODB_SESSION_PWD ='password'; - $ADODB_SESSION_DB ='database'; - $ADODB_SESSION_TBL = 'sessions' - - 3. Recommended is PHP 4.0.2 or later. There are documented -session bugs in earlier versions of PHP. - -*/ - - -include_once('crypt.inc.php'); - -if (!defined('_ADODB_LAYER')) { - include (dirname(__FILE__).'/adodb.inc.php'); -} - - /* if database time and system time is difference is greater than this, then give warning */ - define('ADODB_SESSION_SYNCH_SECS',60); - -if (!defined('ADODB_SESSION')) { - - define('ADODB_SESSION',1); - -GLOBAL $ADODB_SESSION_CONNECT, - $ADODB_SESSION_DRIVER, - $ADODB_SESSION_USER, - $ADODB_SESSION_PWD, - $ADODB_SESSION_DB, - $ADODB_SESS_CONN, - $ADODB_SESS_LIFE, - $ADODB_SESS_DEBUG, - $ADODB_SESS_INSERT, - $ADODB_SESSION_EXPIRE_NOTIFY, - $ADODB_SESSION_TBL; - - //$ADODB_SESS_DEBUG = true; - - /* SET THE FOLLOWING PARAMETERS */ -if (empty($ADODB_SESSION_DRIVER)) { - $ADODB_SESSION_DRIVER='mysql'; - $ADODB_SESSION_CONNECT='localhost'; - $ADODB_SESSION_USER ='root'; - $ADODB_SESSION_PWD =''; - $ADODB_SESSION_DB ='xphplens_2'; -} - -if (empty($ADODB_SESSION_TBL)){ - $ADODB_SESSION_TBL = 'sessions'; -} - -if (empty($ADODB_SESSION_EXPIRE_NOTIFY)) { - $ADODB_SESSION_EXPIRE_NOTIFY = false; -} - -function ADODB_Session_Key() -{ -$ADODB_CRYPT_KEY = 'CRYPTED ADODB SESSIONS ROCK!'; - - /* USE THIS FUNCTION TO CREATE THE ENCRYPTION KEY FOR CRYPTED SESSIONS */ - /* Crypt the used key, $ADODB_CRYPT_KEY as key and session_ID as SALT */ - return crypt($ADODB_CRYPT_KEY, session_ID()); -} - -$ADODB_SESS_LIFE = ini_get('session.gc_maxlifetime'); -if ($ADODB_SESS_LIFE <= 1) { - // bug in PHP 4.0.3 pl 1 -- how about other versions? - //print "<h3>Session Error: PHP.INI setting <i>session.gc_maxlifetime</i>not set: $ADODB_SESS_LIFE</h3>"; - $ADODB_SESS_LIFE=1440; -} - -function adodb_sess_open($save_path, $session_name) -{ -GLOBAL $ADODB_SESSION_CONNECT, - $ADODB_SESSION_DRIVER, - $ADODB_SESSION_USER, - $ADODB_SESSION_PWD, - $ADODB_SESSION_DB, - $ADODB_SESS_CONN, - $ADODB_SESS_DEBUG; - - $ADODB_SESS_INSERT = false; - - if (isset($ADODB_SESS_CONN)) return true; - - $ADODB_SESS_CONN = ADONewConnection($ADODB_SESSION_DRIVER); - if (!empty($ADODB_SESS_DEBUG)) { - $ADODB_SESS_CONN->debug = true; - print" conn=$ADODB_SESSION_CONNECT user=$ADODB_SESSION_USER pwd=$ADODB_SESSION_PWD db=$ADODB_SESSION_DB "; - } - return $ADODB_SESS_CONN->PConnect($ADODB_SESSION_CONNECT, - $ADODB_SESSION_USER,$ADODB_SESSION_PWD,$ADODB_SESSION_DB); - -} - -function adodb_sess_close() -{ -global $ADODB_SESS_CONN; - - if ($ADODB_SESS_CONN) $ADODB_SESS_CONN->Close(); - return true; -} - -function adodb_sess_read($key) -{ -$Crypt = new MD5Crypt; -global $ADODB_SESS_CONN,$ADODB_SESS_INSERT,$ADODB_SESSION_TBL; - $rs = $ADODB_SESS_CONN->Execute("SELECT data FROM $ADODB_SESSION_TBL WHERE sesskey = '$key' AND expiry >= " . time()); - if ($rs) { - if ($rs->EOF) { - $ADODB_SESS_INSERT = true; - $v = ''; - } else { - // Decrypt session data - $v = rawurldecode($Crypt->Decrypt(reset($rs->fields), ADODB_Session_Key())); - } - $rs->Close(); - return $v; - } - else $ADODB_SESS_INSERT = true; - - return ''; -} - -function adodb_sess_write($key, $val) -{ -$Crypt = new MD5Crypt; - global $ADODB_SESS_INSERT,$ADODB_SESS_CONN, $ADODB_SESS_LIFE, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY; - - $expiry = time() + $ADODB_SESS_LIFE; - - // encrypt session data.. - $val = $Crypt->Encrypt(rawurlencode($val), ADODB_Session_Key()); - - $arr = array('sesskey' => $key, 'expiry' => $expiry, 'data' => $val); - if ($ADODB_SESSION_EXPIRE_NOTIFY) { - $var = reset($ADODB_SESSION_EXPIRE_NOTIFY); - global $$var; - $arr['expireref'] = $$var; - } - $rs = $ADODB_SESS_CONN->Replace($ADODB_SESSION_TBL, - $arr, - 'sesskey',$autoQuote = true); - - if (!$rs) { - ADOConnection::outp( ' --- Session Replace: '.$ADODB_SESS_CONN->ErrorMsg().'</p>',false); - } else { - // bug in access driver (could be odbc?) means that info is not commited - // properly unless select statement executed in Win2000 - - if ($ADODB_SESS_CONN->databaseType == 'access') $rs = $ADODB_SESS_CONN->Execute("select sesskey from $ADODB_SESSION_TBL WHERE sesskey='$key'"); - } - return isset($rs); -} - -function adodb_sess_destroy($key) -{ - global $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY; - - if ($ADODB_SESSION_EXPIRE_NOTIFY) { - reset($ADODB_SESSION_EXPIRE_NOTIFY); - $fn = next($ADODB_SESSION_EXPIRE_NOTIFY); - $savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM); - $rs = $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE sesskey='$key'"); - $ADODB_SESS_CONN->SetFetchMode($savem); - if ($rs) { - $ADODB_SESS_CONN->BeginTrans(); - while (!$rs->EOF) { - $ref = $rs->fields[0]; - $key = $rs->fields[1]; - $fn($ref,$key); - $del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'"); - $rs->MoveNext(); - } - $ADODB_SESS_CONN->CommitTrans(); - } - } else { - $qry = "DELETE FROM $ADODB_SESSION_TBL WHERE sesskey = '$key'"; - $rs = $ADODB_SESS_CONN->Execute($qry); - } - return $rs ? true : false; -} - - -function adodb_sess_gc($maxlifetime) { - global $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY,$ADODB_SESS_DEBUG; - - if ($ADODB_SESSION_EXPIRE_NOTIFY) { - reset($ADODB_SESSION_EXPIRE_NOTIFY); - $fn = next($ADODB_SESSION_EXPIRE_NOTIFY); - $savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM); - $t = time(); - $rs = $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE expiry < $t"); - $ADODB_SESS_CONN->SetFetchMode($savem); - if ($rs) { - $ADODB_SESS_CONN->BeginTrans(); - while (!$rs->EOF) { - $ref = $rs->fields[0]; - $key = $rs->fields[1]; - $fn($ref,$key); - //$del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'"); - $rs->MoveNext(); - } - $rs->Close(); - - $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE expiry < $t"); - $ADODB_SESS_CONN->CommitTrans(); - } - } else { - $qry = "DELETE FROM $ADODB_SESSION_TBL WHERE expiry < " . time(); - $ADODB_SESS_CONN->Execute($qry); - } - - // suggested by Cameron, "GaM3R" <gamr@outworld.cx> - if (defined('ADODB_SESSION_OPTIMIZE')) - { - global $ADODB_SESSION_DRIVER; - - switch( $ADODB_SESSION_DRIVER ) { - case 'mysql': - case 'mysqlt': - $opt_qry = 'OPTIMIZE TABLE '.$ADODB_SESSION_TBL; - break; - case 'postgresql': - case 'postgresql7': - $opt_qry = 'VACUUM '.$ADODB_SESSION_TBL; - break; - } - } - - if ($ADODB_SESS_CONN->dataProvider === 'oci8') $sql = 'select TO_CHAR('.($ADODB_SESS_CONN->sysTimeStamp).', \'RRRR-MM-DD HH24:MI:SS\') from '. $ADODB_SESSION_TBL; - else $sql = 'select '.$ADODB_SESS_CONN->sysTimeStamp.' from '. $ADODB_SESSION_TBL; - - $rs =& $ADODB_SESS_CONN->SelectLimit($sql,1); - if ($rs && !$rs->EOF) { - - $dbts = reset($rs->fields); - $rs->Close(); - $dbt = $ADODB_SESS_CONN->UnixTimeStamp($dbts); - $t = time(); - if (abs($dbt - $t) >= ADODB_SESSION_SYNCH_SECS) { - $msg = - __FILE__.": Server time for webserver {$_SERVER['HTTP_HOST']} not in synch with database: database=$dbt ($dbts), webserver=$t (diff=".(abs($dbt-$t)/3600)." hrs)"; - error_log($msg); - if ($ADODB_SESS_DEBUG) ADOConnection::outp(" --- $msg</p>"); - } - } - - return true; -} - -session_module_name('user'); -session_set_save_handler( - "adodb_sess_open", - "adodb_sess_close", - "adodb_sess_read", - "adodb_sess_write", - "adodb_sess_destroy", - "adodb_sess_gc"); -} - -/* TEST SCRIPT -- UNCOMMENT */ -/* -if (0) { - - session_start(); - session_register('AVAR'); - $_SESSION['AVAR'] += 1; - print " --- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>"; -} -*/ -?> diff --git a/lib/adodb/session/old/adodb-session-clob.php b/lib/adodb/session/old/adodb-session-clob.php deleted file mode 100644 index 788e184..0000000 --- a/lib/adodb/session/old/adodb-session-clob.php +++ /dev/null @@ -1,448 +0,0 @@ -<?php
-/*
- V4.93 10 Oct 2006 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved.
- Released under both BSD license and Lesser GPL library license.
- Whenever there is any discrepancy between the two licenses,
- the BSD license will take precedence.
- Set tabs to 4 for best viewing.
-
- Latest version of ADODB is available at http://php.weblogs.com/adodb
- ======================================================================
-
- This file provides PHP4 session management using the ADODB database
- wrapper library, using Oracle CLOB's to store data. Contributed by achim.gosse@ddd.de.
-
- Example
- =======
-
- include('adodb.inc.php');
- include('adodb-session.php');
- session_start();
- session_register('AVAR');
- $_SESSION['AVAR'] += 1;
- print "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>";
-
-To force non-persistent connections, call adodb_session_open first before session_start():
-
- include('adodb.inc.php');
- include('adodb-session.php');
- adodb_session_open(false,false,false);
- session_start();
- session_register('AVAR');
- $_SESSION['AVAR'] += 1;
- print "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>";
-
-
- Installation
- ============
- 1. Create this table in your database (syntax might vary depending on your db):
-
- create table sessions (
- SESSKEY char(32) not null,
- EXPIRY int(11) unsigned not null,
- EXPIREREF varchar(64),
- DATA CLOB,
- primary key (sesskey)
- );
-
-
- 2. Then define the following parameters in this file:
- $ADODB_SESSION_DRIVER='database driver, eg. mysql or ibase';
- $ADODB_SESSION_CONNECT='server to connect to';
- $ADODB_SESSION_USER ='user';
- $ADODB_SESSION_PWD ='password';
- $ADODB_SESSION_DB ='database';
- $ADODB_SESSION_TBL = 'sessions'
- $ADODB_SESSION_USE_LOBS = false; (or, if you wanna use CLOBS (= 'CLOB') or ( = 'BLOB')
-
- 3. Recommended is PHP 4.1.0 or later. There are documented
- session bugs in earlier versions of PHP.
-
- 4. If you want to receive notifications when a session expires, then
- you can tag a session with an EXPIREREF, and before the session
- record is deleted, we can call a function that will pass the EXPIREREF
- as the first parameter, and the session key as the second parameter.
-
- To do this, define a notification function, say NotifyFn:
-
- function NotifyFn($expireref, $sesskey)
- {
- }
-
- Then you need to define a global variable $ADODB_SESSION_EXPIRE_NOTIFY.
- This is an array with 2 elements, the first being the name of the variable
- you would like to store in the EXPIREREF field, and the 2nd is the
- notification function's name.
-
- In this example, we want to be notified when a user's session
- has expired, so we store the user id in the global variable $USERID,
- store this value in the EXPIREREF field:
-
- $ADODB_SESSION_EXPIRE_NOTIFY = array('USERID','NotifyFn');
-
- Then when the NotifyFn is called, we are passed the $USERID as the first
- parameter, eg. NotifyFn($userid, $sesskey).
-*/
-
-if (!defined('_ADODB_LAYER')) {
- include (dirname(__FILE__).'/adodb.inc.php');
-}
-
-if (!defined('ADODB_SESSION')) {
-
- define('ADODB_SESSION',1);
-
- /* if database time and system time is difference is greater than this, then give warning */
- define('ADODB_SESSION_SYNCH_SECS',60);
-
-/****************************************************************************************\
- Global definitions
-\****************************************************************************************/
-GLOBAL $ADODB_SESSION_CONNECT,
- $ADODB_SESSION_DRIVER,
- $ADODB_SESSION_USER,
- $ADODB_SESSION_PWD,
- $ADODB_SESSION_DB,
- $ADODB_SESS_CONN,
- $ADODB_SESS_LIFE,
- $ADODB_SESS_DEBUG,
- $ADODB_SESSION_EXPIRE_NOTIFY,
- $ADODB_SESSION_CRC,
- $ADODB_SESSION_USE_LOBS,
- $ADODB_SESSION_TBL;
-
- if (!isset($ADODB_SESSION_USE_LOBS)) $ADODB_SESSION_USE_LOBS = 'CLOB';
-
- $ADODB_SESS_LIFE = ini_get('session.gc_maxlifetime');
- if ($ADODB_SESS_LIFE <= 1) {
- // bug in PHP 4.0.3 pl 1 -- how about other versions?
- //print "<h3>Session Error: PHP.INI setting <i>session.gc_maxlifetime</i>not set: $ADODB_SESS_LIFE</h3>";
- $ADODB_SESS_LIFE=1440;
- }
- $ADODB_SESSION_CRC = false;
- //$ADODB_SESS_DEBUG = true;
-
- //////////////////////////////////
- /* SET THE FOLLOWING PARAMETERS */
- //////////////////////////////////
-
- if (empty($ADODB_SESSION_DRIVER)) {
- $ADODB_SESSION_DRIVER='mysql';
- $ADODB_SESSION_CONNECT='localhost';
- $ADODB_SESSION_USER ='root';
- $ADODB_SESSION_PWD ='';
- $ADODB_SESSION_DB ='xphplens_2';
- }
-
- if (empty($ADODB_SESSION_EXPIRE_NOTIFY)) {
- $ADODB_SESSION_EXPIRE_NOTIFY = false;
- }
- // Made table name configurable - by David Johnson djohnson@inpro.net
- if (empty($ADODB_SESSION_TBL)){
- $ADODB_SESSION_TBL = 'sessions';
- }
-
-
- // defaulting $ADODB_SESSION_USE_LOBS
- if (!isset($ADODB_SESSION_USE_LOBS) || empty($ADODB_SESSION_USE_LOBS)) {
- $ADODB_SESSION_USE_LOBS = false;
- }
-
- /*
- $ADODB_SESS['driver'] = $ADODB_SESSION_DRIVER;
- $ADODB_SESS['connect'] = $ADODB_SESSION_CONNECT;
- $ADODB_SESS['user'] = $ADODB_SESSION_USER;
- $ADODB_SESS['pwd'] = $ADODB_SESSION_PWD;
- $ADODB_SESS['db'] = $ADODB_SESSION_DB;
- $ADODB_SESS['life'] = $ADODB_SESS_LIFE;
- $ADODB_SESS['debug'] = $ADODB_SESS_DEBUG;
-
- $ADODB_SESS['debug'] = $ADODB_SESS_DEBUG;
- $ADODB_SESS['table'] = $ADODB_SESS_TBL;
- */
-
-/****************************************************************************************\
- Create the connection to the database.
-
- If $ADODB_SESS_CONN already exists, reuse that connection
-\****************************************************************************************/
-function adodb_sess_open($save_path, $session_name,$persist=true)
-{
-GLOBAL $ADODB_SESS_CONN;
- if (isset($ADODB_SESS_CONN)) return true;
-
-GLOBAL $ADODB_SESSION_CONNECT,
- $ADODB_SESSION_DRIVER,
- $ADODB_SESSION_USER,
- $ADODB_SESSION_PWD,
- $ADODB_SESSION_DB,
- $ADODB_SESS_DEBUG;
-
- // cannot use & below - do not know why...
- $ADODB_SESS_CONN = ADONewConnection($ADODB_SESSION_DRIVER);
- if (!empty($ADODB_SESS_DEBUG)) {
- $ADODB_SESS_CONN->debug = true;
- ADOConnection::outp( " conn=$ADODB_SESSION_CONNECT user=$ADODB_SESSION_USER pwd=$ADODB_SESSION_PWD db=$ADODB_SESSION_DB ");
- }
- if ($persist) $ok = $ADODB_SESS_CONN->PConnect($ADODB_SESSION_CONNECT,
- $ADODB_SESSION_USER,$ADODB_SESSION_PWD,$ADODB_SESSION_DB);
- else $ok = $ADODB_SESS_CONN->Connect($ADODB_SESSION_CONNECT,
- $ADODB_SESSION_USER,$ADODB_SESSION_PWD,$ADODB_SESSION_DB);
-
- if (!$ok) ADOConnection::outp( "
--- Session: connection failed</p>",false);
-}
-
-/****************************************************************************************\
- Close the connection
-\****************************************************************************************/
-function adodb_sess_close()
-{
-global $ADODB_SESS_CONN;
-
- if ($ADODB_SESS_CONN) $ADODB_SESS_CONN->Close();
- return true;
-}
-
-/****************************************************************************************\
- Slurp in the session variables and return the serialized string
-\****************************************************************************************/
-function adodb_sess_read($key)
-{
-global $ADODB_SESS_CONN,$ADODB_SESSION_TBL,$ADODB_SESSION_CRC;
-
- $rs = $ADODB_SESS_CONN->Execute("SELECT data FROM $ADODB_SESSION_TBL WHERE sesskey = '$key' AND expiry >= " . time());
- if ($rs) {
- if ($rs->EOF) {
- $v = '';
- } else
- $v = rawurldecode(reset($rs->fields));
-
- $rs->Close();
-
- // new optimization adodb 2.1
- $ADODB_SESSION_CRC = strlen($v).crc32($v);
-
- return $v;
- }
-
- return ''; // thx to Jorma Tuomainen, webmaster#wizactive.com
-}
-
-/****************************************************************************************\
- Write the serialized data to a database.
-
- If the data has not been modified since adodb_sess_read(), we do not write.
-\****************************************************************************************/
-function adodb_sess_write($key, $val)
-{
- global
- $ADODB_SESS_CONN,
- $ADODB_SESS_LIFE,
- $ADODB_SESSION_TBL,
- $ADODB_SESS_DEBUG,
- $ADODB_SESSION_CRC,
- $ADODB_SESSION_EXPIRE_NOTIFY,
- $ADODB_SESSION_DRIVER, // added
- $ADODB_SESSION_USE_LOBS; // added
-
- $expiry = time() + $ADODB_SESS_LIFE;
-
- // crc32 optimization since adodb 2.1
- // now we only update expiry date, thx to sebastian thom in adodb 2.32
- if ($ADODB_SESSION_CRC !== false && $ADODB_SESSION_CRC == strlen($val).crc32($val)) {
- if ($ADODB_SESS_DEBUG) echo "
--- Session: Only updating date - crc32 not changed</p>";
- $qry = "UPDATE $ADODB_SESSION_TBL SET expiry=$expiry WHERE sesskey='$key' AND expiry >= " . time();
- $rs = $ADODB_SESS_CONN->Execute($qry);
- return true;
- }
- $val = rawurlencode($val);
-
- $arr = array('sesskey' => $key, 'expiry' => $expiry, 'data' => $val);
- if ($ADODB_SESSION_EXPIRE_NOTIFY) {
- $var = reset($ADODB_SESSION_EXPIRE_NOTIFY);
- global $$var;
- $arr['expireref'] = $$var;
- }
-
-
- if ($ADODB_SESSION_USE_LOBS === false) { // no lobs, simply use replace()
- $rs = $ADODB_SESS_CONN->Replace($ADODB_SESSION_TBL,$arr, 'sesskey',$autoQuote = true);
- if (!$rs) {
- $err = $ADODB_SESS_CONN->ErrorMsg();
- }
- } else {
- // what value shall we insert/update for lob row?
- switch ($ADODB_SESSION_DRIVER) {
- // empty_clob or empty_lob for oracle dbs
- case "oracle":
- case "oci8":
- case "oci8po":
- case "oci805":
- $lob_value = sprintf("empty_%s()", strtolower($ADODB_SESSION_USE_LOBS));
- break;
-
- // null for all other
- default:
- $lob_value = "null";
- break;
- }
-
- // do we insert or update? => as for sesskey
- $res = $ADODB_SESS_CONN->Execute("select count(*) as cnt from $ADODB_SESSION_TBL where sesskey = '$key'");
- if ($res && reset($res->fields) > 0) {
- $qry = sprintf("update %s set expiry = %d, data = %s where sesskey = '%s'", $ADODB_SESSION_TBL, $expiry, $lob_value, $key);
- } else {
- // insert
- $qry = sprintf("insert into %s (sesskey, expiry, data) values ('%s', %d, %s)", $ADODB_SESSION_TBL, $key, $expiry, $lob_value);
- }
-
- $err = "";
- $rs1 = $ADODB_SESS_CONN->Execute($qry);
- if (!$rs1) {
- $err .= $ADODB_SESS_CONN->ErrorMsg()."\n";
- }
- $rs2 = $ADODB_SESS_CONN->UpdateBlob($ADODB_SESSION_TBL, 'data', $val, "sesskey='$key'", strtoupper($ADODB_SESSION_USE_LOBS));
- if (!$rs2) {
- $err .= $ADODB_SESS_CONN->ErrorMsg()."\n";
- }
- $rs = ($rs1 && $rs2) ? true : false;
- }
-
- if (!$rs) {
- ADOConnection::outp( '
--- Session Replace: '.nl2br($err).'</p>',false);
- } else {
- // bug in access driver (could be odbc?) means that info is not commited
- // properly unless select statement executed in Win2000
- if ($ADODB_SESS_CONN->databaseType == 'access')
- $rs = $ADODB_SESS_CONN->Execute("select sesskey from $ADODB_SESSION_TBL WHERE sesskey='$key'");
- }
- return !empty($rs);
-}
-
-function adodb_sess_destroy($key)
-{
- global $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY;
-
- if ($ADODB_SESSION_EXPIRE_NOTIFY) {
- reset($ADODB_SESSION_EXPIRE_NOTIFY);
- $fn = next($ADODB_SESSION_EXPIRE_NOTIFY);
- $savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM);
- $rs = $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
- $ADODB_SESS_CONN->SetFetchMode($savem);
- if ($rs) {
- $ADODB_SESS_CONN->BeginTrans();
- while (!$rs->EOF) {
- $ref = $rs->fields[0];
- $key = $rs->fields[1];
- $fn($ref,$key);
- $del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
- $rs->MoveNext();
- }
- $ADODB_SESS_CONN->CommitTrans();
- }
- } else {
- $qry = "DELETE FROM $ADODB_SESSION_TBL WHERE sesskey = '$key'";
- $rs = $ADODB_SESS_CONN->Execute($qry);
- }
- return $rs ? true : false;
-}
-
-function adodb_sess_gc($maxlifetime)
-{
- global $ADODB_SESS_DEBUG, $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY;
-
- if ($ADODB_SESSION_EXPIRE_NOTIFY) {
- reset($ADODB_SESSION_EXPIRE_NOTIFY);
- $fn = next($ADODB_SESSION_EXPIRE_NOTIFY);
- $savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM);
- $t = time();
- $rs = $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE expiry < $t");
- $ADODB_SESS_CONN->SetFetchMode($savem);
- if ($rs) {
- $ADODB_SESS_CONN->BeginTrans();
- while (!$rs->EOF) {
- $ref = $rs->fields[0];
- $key = $rs->fields[1];
- $fn($ref,$key);
- $del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
- $rs->MoveNext();
- }
- $rs->Close();
-
- //$ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE expiry < $t");
- $ADODB_SESS_CONN->CommitTrans();
-
- }
- } else {
- $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE expiry < " . time());
-
- if ($ADODB_SESS_DEBUG) ADOConnection::outp("
--- <b>Garbage Collection</b>: $qry</p>");
- }
- // suggested by Cameron, "GaM3R" <gamr@outworld.cx>
- if (defined('ADODB_SESSION_OPTIMIZE')) {
- global $ADODB_SESSION_DRIVER;
-
- switch( $ADODB_SESSION_DRIVER ) {
- case 'mysql':
- case 'mysqlt':
- $opt_qry = 'OPTIMIZE TABLE '.$ADODB_SESSION_TBL;
- break;
- case 'postgresql':
- case 'postgresql7':
- $opt_qry = 'VACUUM '.$ADODB_SESSION_TBL;
- break;
- }
- if (!empty($opt_qry)) {
- $ADODB_SESS_CONN->Execute($opt_qry);
- }
- }
- if ($ADODB_SESS_CONN->dataProvider === 'oci8') $sql = 'select TO_CHAR('.($ADODB_SESS_CONN->sysTimeStamp).', \'RRRR-MM-DD HH24:MI:SS\') from '. $ADODB_SESSION_TBL;
- else $sql = 'select '.$ADODB_SESS_CONN->sysTimeStamp.' from '. $ADODB_SESSION_TBL;
-
- $rs =& $ADODB_SESS_CONN->SelectLimit($sql,1);
- if ($rs && !$rs->EOF) {
-
- $dbts = reset($rs->fields);
- $rs->Close();
- $dbt = $ADODB_SESS_CONN->UnixTimeStamp($dbts);
- $t = time();
- if (abs($dbt - $t) >= ADODB_SESSION_SYNCH_SECS) {
- $msg =
- __FILE__.": Server time for webserver {$_SERVER['HTTP_HOST']} not in synch with database: database=$dbt ($dbts), webserver=$t (diff=".(abs($dbt-$t)/3600)." hrs)";
- error_log($msg);
- if ($ADODB_SESS_DEBUG) ADOConnection::outp("
--- $msg</p>");
- }
- }
-
- return true;
-}
-
-session_module_name('user');
-session_set_save_handler(
- "adodb_sess_open",
- "adodb_sess_close",
- "adodb_sess_read",
- "adodb_sess_write",
- "adodb_sess_destroy",
- "adodb_sess_gc");
-}
-
-/* TEST SCRIPT -- UNCOMMENT */
-
-if (0) {
-
- session_start();
- session_register('AVAR');
- $_SESSION['AVAR'] += 1;
- ADOConnection::outp( "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>",false);
-}
-
-?>
diff --git a/lib/adodb/session/old/adodb-session.php b/lib/adodb/session/old/adodb-session.php deleted file mode 100644 index 6fc9b2f..0000000 --- a/lib/adodb/session/old/adodb-session.php +++ /dev/null @@ -1,439 +0,0 @@ -<?php
-/*
-V4.93 10 Oct 2006 (c) 2000-2007 John Lim (jlim#natsoft.com.my). All rights reserved.
- Released under both BSD license and Lesser GPL library license.
- Whenever there is any discrepancy between the two licenses,
- the BSD license will take precedence.
- Set tabs to 4 for best viewing.
-
- Latest version of ADODB is available at http://php.weblogs.com/adodb
- ======================================================================
-
- This file provides PHP4 session management using the ADODB database
-wrapper library.
-
- Example
- =======
-
- include('adodb.inc.php');
- include('adodb-session.php');
- session_start();
- session_register('AVAR');
- $_SESSION['AVAR'] += 1;
- print "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>";
-
-To force non-persistent connections, call adodb_session_open first before session_start():
-
- include('adodb.inc.php');
- include('adodb-session.php');
- adodb_sess_open(false,false,false);
- session_start();
- session_register('AVAR');
- $_SESSION['AVAR'] += 1;
- print "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>";
-
-
- Installation
- ============
- 1. Create this table in your database (syntax might vary depending on your db):
-
- create table sessions (
- SESSKEY char(32) not null,
- EXPIRY int(11) unsigned not null,
- EXPIREREF varchar(64),
- DATA text not null,
- primary key (sesskey)
- );
-
- For oracle:
- create table sessions (
- SESSKEY char(32) not null,
- EXPIRY DECIMAL(16) not null,
- EXPIREREF varchar(64),
- DATA varchar(4000) not null,
- primary key (sesskey)
- );
-
-
- 2. Then define the following parameters. You can either modify
- this file, or define them before this file is included:
-
- $ADODB_SESSION_DRIVER='database driver, eg. mysql or ibase';
- $ADODB_SESSION_CONNECT='server to connect to';
- $ADODB_SESSION_USER ='user';
- $ADODB_SESSION_PWD ='password';
- $ADODB_SESSION_DB ='database';
- $ADODB_SESSION_TBL = 'sessions'
-
- 3. Recommended is PHP 4.1.0 or later. There are documented
- session bugs in earlier versions of PHP.
-
- 4. If you want to receive notifications when a session expires, then
- you can tag a session with an EXPIREREF, and before the session
- record is deleted, we can call a function that will pass the EXPIREREF
- as the first parameter, and the session key as the second parameter.
-
- To do this, define a notification function, say NotifyFn:
-
- function NotifyFn($expireref, $sesskey)
- {
- }
-
- Then you need to define a global variable $ADODB_SESSION_EXPIRE_NOTIFY.
- This is an array with 2 elements, the first being the name of the variable
- you would like to store in the EXPIREREF field, and the 2nd is the
- notification function's name.
-
- In this example, we want to be notified when a user's session
- has expired, so we store the user id in the global variable $USERID,
- store this value in the EXPIREREF field:
-
- $ADODB_SESSION_EXPIRE_NOTIFY = array('USERID','NotifyFn');
-
- Then when the NotifyFn is called, we are passed the $USERID as the first
- parameter, eg. NotifyFn($userid, $sesskey).
-*/
-
-if (!defined('_ADODB_LAYER')) {
- include (dirname(__FILE__).'/adodb.inc.php');
-}
-
-if (!defined('ADODB_SESSION')) {
-
- define('ADODB_SESSION',1);
-
- /* if database time and system time is difference is greater than this, then give warning */
- define('ADODB_SESSION_SYNCH_SECS',60);
-
- /*
- Thanks Joe Li. See http://phplens.com/lens/lensforum/msgs.php?id=11487&x=1
-*/
-function adodb_session_regenerate_id()
-{
- $conn =& ADODB_Session::_conn();
- if (!$conn) return false;
-
- $old_id = session_id();
- if (function_exists('session_regenerate_id')) {
- session_regenerate_id();
- } else {
- session_id(md5(uniqid(rand(), true)));
- $ck = session_get_cookie_params();
- setcookie(session_name(), session_id(), false, $ck['path'], $ck['domain'], $ck['secure']);
- //@session_start();
- }
- $new_id = session_id();
- $ok =& $conn->Execute('UPDATE '. ADODB_Session::table(). ' SET sesskey='. $conn->qstr($new_id). ' WHERE sesskey='.$conn->qstr($old_id));
-
- /* it is possible that the update statement fails due to a collision */
- if (!$ok) {
- session_id($old_id);
- if (empty($ck)) $ck = session_get_cookie_params();
- setcookie(session_name(), session_id(), false, $ck['path'], $ck['domain'], $ck['secure']);
- return false;
- }
-
- return true;
-}
-
-/****************************************************************************************\
- Global definitions
-\****************************************************************************************/
-GLOBAL $ADODB_SESSION_CONNECT,
- $ADODB_SESSION_DRIVER,
- $ADODB_SESSION_USER,
- $ADODB_SESSION_PWD,
- $ADODB_SESSION_DB,
- $ADODB_SESS_CONN,
- $ADODB_SESS_LIFE,
- $ADODB_SESS_DEBUG,
- $ADODB_SESSION_EXPIRE_NOTIFY,
- $ADODB_SESSION_CRC,
- $ADODB_SESSION_TBL;
-
-
- $ADODB_SESS_LIFE = ini_get('session.gc_maxlifetime');
- if ($ADODB_SESS_LIFE <= 1) {
- // bug in PHP 4.0.3 pl 1 -- how about other versions?
- //print "<h3>Session Error: PHP.INI setting <i>session.gc_maxlifetime</i>not set: $ADODB_SESS_LIFE</h3>";
- $ADODB_SESS_LIFE=1440;
- }
- $ADODB_SESSION_CRC = false;
- //$ADODB_SESS_DEBUG = true;
-
- //////////////////////////////////
- /* SET THE FOLLOWING PARAMETERS */
- //////////////////////////////////
-
- if (empty($ADODB_SESSION_DRIVER)) {
- $ADODB_SESSION_DRIVER='mysql';
- $ADODB_SESSION_CONNECT='localhost';
- $ADODB_SESSION_USER ='root';
- $ADODB_SESSION_PWD ='';
- $ADODB_SESSION_DB ='xphplens_2';
- }
-
- if (empty($ADODB_SESSION_EXPIRE_NOTIFY)) {
- $ADODB_SESSION_EXPIRE_NOTIFY = false;
- }
- // Made table name configurable - by David Johnson djohnson@inpro.net
- if (empty($ADODB_SESSION_TBL)){
- $ADODB_SESSION_TBL = 'sessions';
- }
-
- /*
- $ADODB_SESS['driver'] = $ADODB_SESSION_DRIVER;
- $ADODB_SESS['connect'] = $ADODB_SESSION_CONNECT;
- $ADODB_SESS['user'] = $ADODB_SESSION_USER;
- $ADODB_SESS['pwd'] = $ADODB_SESSION_PWD;
- $ADODB_SESS['db'] = $ADODB_SESSION_DB;
- $ADODB_SESS['life'] = $ADODB_SESS_LIFE;
- $ADODB_SESS['debug'] = $ADODB_SESS_DEBUG;
-
- $ADODB_SESS['debug'] = $ADODB_SESS_DEBUG;
- $ADODB_SESS['table'] = $ADODB_SESS_TBL;
- */
-
-/****************************************************************************************\
- Create the connection to the database.
-
- If $ADODB_SESS_CONN already exists, reuse that connection
-\****************************************************************************************/
-function adodb_sess_open($save_path, $session_name,$persist=true)
-{
-GLOBAL $ADODB_SESS_CONN;
- if (isset($ADODB_SESS_CONN)) return true;
-
-GLOBAL $ADODB_SESSION_CONNECT,
- $ADODB_SESSION_DRIVER,
- $ADODB_SESSION_USER,
- $ADODB_SESSION_PWD,
- $ADODB_SESSION_DB,
- $ADODB_SESS_DEBUG;
-
- // cannot use & below - do not know why...
- $ADODB_SESS_CONN = ADONewConnection($ADODB_SESSION_DRIVER);
- if (!empty($ADODB_SESS_DEBUG)) {
- $ADODB_SESS_CONN->debug = true;
- ADOConnection::outp( " conn=$ADODB_SESSION_CONNECT user=$ADODB_SESSION_USER pwd=$ADODB_SESSION_PWD db=$ADODB_SESSION_DB ");
- }
- if ($persist) $ok = $ADODB_SESS_CONN->PConnect($ADODB_SESSION_CONNECT,
- $ADODB_SESSION_USER,$ADODB_SESSION_PWD,$ADODB_SESSION_DB);
- else $ok = $ADODB_SESS_CONN->Connect($ADODB_SESSION_CONNECT,
- $ADODB_SESSION_USER,$ADODB_SESSION_PWD,$ADODB_SESSION_DB);
-
- if (!$ok) ADOConnection::outp( "
--- Session: connection failed</p>",false);
-}
-
-/****************************************************************************************\
- Close the connection
-\****************************************************************************************/
-function adodb_sess_close()
-{
-global $ADODB_SESS_CONN;
-
- if ($ADODB_SESS_CONN) $ADODB_SESS_CONN->Close();
- return true;
-}
-
-/****************************************************************************************\
- Slurp in the session variables and return the serialized string
-\****************************************************************************************/
-function adodb_sess_read($key)
-{
-global $ADODB_SESS_CONN,$ADODB_SESSION_TBL,$ADODB_SESSION_CRC;
-
- $rs = $ADODB_SESS_CONN->Execute("SELECT data FROM $ADODB_SESSION_TBL WHERE sesskey = '$key' AND expiry >= " . time());
- if ($rs) {
- if ($rs->EOF) {
- $v = '';
- } else
- $v = rawurldecode(reset($rs->fields));
-
- $rs->Close();
-
- // new optimization adodb 2.1
- $ADODB_SESSION_CRC = strlen($v).crc32($v);
-
- return $v;
- }
-
- return ''; // thx to Jorma Tuomainen, webmaster#wizactive.com
-}
-
-/****************************************************************************************\
- Write the serialized data to a database.
-
- If the data has not been modified since adodb_sess_read(), we do not write.
-\****************************************************************************************/
-function adodb_sess_write($key, $val)
-{
- global
- $ADODB_SESS_CONN,
- $ADODB_SESS_LIFE,
- $ADODB_SESSION_TBL,
- $ADODB_SESS_DEBUG,
- $ADODB_SESSION_CRC,
- $ADODB_SESSION_EXPIRE_NOTIFY;
-
- $expiry = time() + $ADODB_SESS_LIFE;
-
- // crc32 optimization since adodb 2.1
- // now we only update expiry date, thx to sebastian thom in adodb 2.32
- if ($ADODB_SESSION_CRC !== false && $ADODB_SESSION_CRC == strlen($val).crc32($val)) {
- if ($ADODB_SESS_DEBUG) echo "
--- Session: Only updating date - crc32 not changed</p>";
- $qry = "UPDATE $ADODB_SESSION_TBL SET expiry=$expiry WHERE sesskey='$key' AND expiry >= " . time();
- $rs = $ADODB_SESS_CONN->Execute($qry);
- return true;
- }
- $val = rawurlencode($val);
-
- $arr = array('sesskey' => $key, 'expiry' => $expiry, 'data' => $val);
- if ($ADODB_SESSION_EXPIRE_NOTIFY) {
- $var = reset($ADODB_SESSION_EXPIRE_NOTIFY);
- global $$var;
- $arr['expireref'] = $$var;
- }
- $rs = $ADODB_SESS_CONN->Replace($ADODB_SESSION_TBL,$arr,
- 'sesskey',$autoQuote = true);
-
- if (!$rs) {
- ADOConnection::outp( '
--- Session Replace: '.$ADODB_SESS_CONN->ErrorMsg().'</p>',false);
- } else {
- // bug in access driver (could be odbc?) means that info is not commited
- // properly unless select statement executed in Win2000
- if ($ADODB_SESS_CONN->databaseType == 'access')
- $rs = $ADODB_SESS_CONN->Execute("select sesskey from $ADODB_SESSION_TBL WHERE sesskey='$key'");
- }
- return !empty($rs);
-}
-
-function adodb_sess_destroy($key)
-{
- global $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY;
-
- if ($ADODB_SESSION_EXPIRE_NOTIFY) {
- reset($ADODB_SESSION_EXPIRE_NOTIFY);
- $fn = next($ADODB_SESSION_EXPIRE_NOTIFY);
- $savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM);
- $rs = $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
- $ADODB_SESS_CONN->SetFetchMode($savem);
- if ($rs) {
- $ADODB_SESS_CONN->BeginTrans();
- while (!$rs->EOF) {
- $ref = $rs->fields[0];
- $key = $rs->fields[1];
- $fn($ref,$key);
- $del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
- $rs->MoveNext();
- }
- $ADODB_SESS_CONN->CommitTrans();
- }
- } else {
- $qry = "DELETE FROM $ADODB_SESSION_TBL WHERE sesskey = '$key'";
- $rs = $ADODB_SESS_CONN->Execute($qry);
- }
- return $rs ? true : false;
-}
-
-function adodb_sess_gc($maxlifetime)
-{
- global $ADODB_SESS_DEBUG, $ADODB_SESS_CONN, $ADODB_SESSION_TBL,$ADODB_SESSION_EXPIRE_NOTIFY;
-
- if ($ADODB_SESSION_EXPIRE_NOTIFY) {
- reset($ADODB_SESSION_EXPIRE_NOTIFY);
- $fn = next($ADODB_SESSION_EXPIRE_NOTIFY);
- $savem = $ADODB_SESS_CONN->SetFetchMode(ADODB_FETCH_NUM);
- $t = time();
- $rs =& $ADODB_SESS_CONN->Execute("SELECT expireref,sesskey FROM $ADODB_SESSION_TBL WHERE expiry < $t");
- $ADODB_SESS_CONN->SetFetchMode($savem);
- if ($rs) {
- $ADODB_SESS_CONN->BeginTrans();
- while (!$rs->EOF) {
- $ref = $rs->fields[0];
- $key = $rs->fields[1];
- $fn($ref,$key);
- $del = $ADODB_SESS_CONN->Execute("DELETE FROM $ADODB_SESSION_TBL WHERE sesskey='$key'");
- $rs->MoveNext();
- }
- $rs->Close();
-
- $ADODB_SESS_CONN->CommitTrans();
-
- }
- } else {
- $qry = "DELETE FROM $ADODB_SESSION_TBL WHERE expiry < " . time();
- $ADODB_SESS_CONN->Execute($qry);
-
- if ($ADODB_SESS_DEBUG) ADOConnection::outp("
--- <b>Garbage Collection</b>: $qry</p>");
- }
- // suggested by Cameron, "GaM3R" <gamr@outworld.cx>
- if (defined('ADODB_SESSION_OPTIMIZE')) {
- global $ADODB_SESSION_DRIVER;
-
- switch( $ADODB_SESSION_DRIVER ) {
- case 'mysql':
- case 'mysqlt':
- $opt_qry = 'OPTIMIZE TABLE '.$ADODB_SESSION_TBL;
- break;
- case 'postgresql':
- case 'postgresql7':
- $opt_qry = 'VACUUM '.$ADODB_SESSION_TBL;
- break;
- }
- if (!empty($opt_qry)) {
- $ADODB_SESS_CONN->Execute($opt_qry);
- }
- }
- if ($ADODB_SESS_CONN->dataProvider === 'oci8') $sql = 'select TO_CHAR('.($ADODB_SESS_CONN->sysTimeStamp).', \'RRRR-MM-DD HH24:MI:SS\') from '. $ADODB_SESSION_TBL;
- else $sql = 'select '.$ADODB_SESS_CONN->sysTimeStamp.' from '. $ADODB_SESSION_TBL;
-
- $rs =& $ADODB_SESS_CONN->SelectLimit($sql,1);
- if ($rs && !$rs->EOF) {
-
- $dbts = reset($rs->fields);
- $rs->Close();
- $dbt = $ADODB_SESS_CONN->UnixTimeStamp($dbts);
- $t = time();
-
- if (abs($dbt - $t) >= ADODB_SESSION_SYNCH_SECS) {
-
- $msg =
- __FILE__.": Server time for webserver {$_SERVER['HTTP_HOST']} not in synch with database: database=$dbt ($dbts), webserver=$t (diff=".(abs($dbt-$t)/3600)." hrs)";
- error_log($msg);
- if ($ADODB_SESS_DEBUG) ADOConnection::outp("
--- $msg</p>");
- }
- }
-
- return true;
-}
-
-session_module_name('user');
-session_set_save_handler(
- "adodb_sess_open",
- "adodb_sess_close",
- "adodb_sess_read",
- "adodb_sess_write",
- "adodb_sess_destroy",
- "adodb_sess_gc");
-}
-
-/* TEST SCRIPT -- UNCOMMENT */
-
-if (0) {
-
- session_start();
- session_register('AVAR');
- $_SESSION['AVAR'] += 1;
- ADOConnection::outp( "
--- \$_SESSION['AVAR']={$_SESSION['AVAR']}</p>",false);
-}
-
-?>
\ No newline at end of file diff --git a/lib/adodb/session/old/crypt.inc.php b/lib/adodb/session/old/crypt.inc.php deleted file mode 100644 index b99bbba..0000000 --- a/lib/adodb/session/old/crypt.inc.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php -// Session Encryption by Ari Kuorikoski <ari.kuorikoski@finebyte.com> -class MD5Crypt{ - function keyED($txt,$encrypt_key) - { - $encrypt_key = md5($encrypt_key); - $ctr=0; - $tmp = ""; - for ($i=0;$i<strlen($txt);$i++){ - if ($ctr==strlen($encrypt_key)) $ctr=0; - $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1); - $ctr++; - } - return $tmp; - } - - function Encrypt($txt,$key) - { - srand((double)microtime()*1000000); - $encrypt_key = md5(rand(0,32000)); - $ctr=0; - $tmp = ""; - for ($i=0;$i<strlen($txt);$i++) - { - if ($ctr==strlen($encrypt_key)) $ctr=0; - $tmp.= substr($encrypt_key,$ctr,1) . - (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1)); - $ctr++; - } - return base64_encode($this->keyED($tmp,$key)); - } - - function Decrypt($txt,$key) - { - $txt = $this->keyED(base64_decode($txt),$key); - $tmp = ""; - for ($i=0;$i<strlen($txt);$i++){ - $md5 = substr($txt,$i,1); - $i++; - $tmp.= (substr($txt,$i,1) ^ $md5); - } - return $tmp; - } - - function RandPass() - { - $randomPassword = ""; - srand((double)microtime()*1000000); - for($i=0;$i<8;$i++) - { - $randnumber = rand(48,120); - - while (($randnumber >= 58 && $randnumber <= 64) || ($randnumber >= 91 && $randnumber <= 96)) - { - $randnumber = rand(48,120); - } - - $randomPassword .= chr($randnumber); - } - return $randomPassword; - } - -} -?>
\ No newline at end of file diff --git a/lib/adodb/session/session_schema.xml b/lib/adodb/session/session_schema.xml deleted file mode 100644 index 3c61ff6..0000000 --- a/lib/adodb/session/session_schema.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?> -<schema version="0.2"> - <table name="sessions"> - <desc>table for ADOdb session-management</desc> - - <field name="SESSKEY" type="C" size="32"> - <descr>session key</descr> - <KEY/> - <NOTNULL/> - </field> - - <field name="EXPIRY" type="I" size="11"> - <descr></descr> - <NOTNULL/> - </field> - - <field name="EXPIREREF" type="C" size="64"> - <descr></descr> - </field> - - <field name="DATA" type="XL"> - <descr></descr> - <NOTNULL/> - </field> - </table> -</schema> diff --git a/lib/adodb/session/session_schema2.xml b/lib/adodb/session/session_schema2.xml deleted file mode 100644 index 22f8daf..0000000 --- a/lib/adodb/session/session_schema2.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0"?> -<schema version="0.3"> - <table name="sessions2"> - <desc>table for ADOdb session-management</desc> - - <field name="SESSKEY" type="C" size="64"> - <descr>session key</descr> - <KEY/> - <NOTNULL/> - </field> - - - - <field name="EXPIRY" type="T"> - <descr></descr> - <NOTNULL/> - </field> - - <field name="CREATED" type="T"> - <descr></descr> - <NOTNULL/> - </field> - - <field name="MODIFIED" type="T"> - <descr></descr> - <NOTNULL/> - </field> - - <field name="EXPIREREF" type="C" size="250"> - <descr></descr> - </field> - - <field name="SESSDATA" type="XL"> - <descr></descr> - <NOTNULL/> - </field> - </table> -</schema> |
