v5:session:session_index
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
v5:session:session_index [2016/05/21 15:09] – mnewnham | v5:session:session_index [2023/03/27 13:14] – [MySQL or PDO MySQL] explain reason for using binary collation dregad | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Session Management ====== | ====== Session Management ====== | ||
- | ~~NOTOC~~ | ||
<WRAP right box> | <WRAP right box> | ||
[[v5: | [[v5: | ||
Line 9: | Line 8: | ||
ADOdb session management extends the standard functionality of PHP sessions, by allowing the normal session data seen to be stored in a database itself. There are numerous ways that this method enhances the default behavior | ADOdb session management extends the standard functionality of PHP sessions, by allowing the normal session data seen to be stored in a database itself. There are numerous ways that this method enhances the default behavior | ||
- | * Simplified clean-up at end =of session life | + | * Simplified clean-up at end of session life |
* Easy analysis of session data | * Easy analysis of session data | ||
* Simple session termination | * Simple session termination | ||
Line 24: | Line 23: | ||
An alternative to using a database backed session handler is to use [[v5: | An alternative to using a database backed session handler is to use [[v5: | ||
+ | <WRAP important> | ||
+ | The original session management routines that use '' | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Driver Support ===== | ||
+ | The following drivers are known to work with the adodb-session2.php file: | ||
+ | - mysqli | ||
+ | - pdo_mysqli (From ADOdb version 5.21) | ||
+ | - postgres | ||
+ | - oci8 | ||
+ | |||
+ | This is not an exhaustive list, if you are using the system with a different database, let us know so we can add it to the list. | ||
===== Usage ===== | ===== Usage ===== | ||
Line 87: | Line 99: | ||
ADOdb_Session:: | ADOdb_Session:: | ||
- | ADOdb_session::Persist($connectMode=false); | + | ADOdb_Session::persist($connectMode=false); |
session_start(); | session_start(); | ||
Line 101: | Line 113: | ||
</ | </ | ||
- | The parameter to the '' | ||
- | ^$connectMode^Connection Method^ | ||
- | ^true|PConnect()| | ||
- | ^false|Connect()| | ||
- | ^' | ||
- | ^' | ||
- | ^' | ||
- | <WRAP important> | ||
- | The original session management routines that use '' | ||
- | </ | ||
===== Using Encrypted Sessions ===== | ===== Using Encrypted Sessions ===== | ||
To use a encrypted sessions, replace the file '' | To use a encrypted sessions, replace the file '' | ||
Line 124: | Line 126: | ||
ADOdb_Session:: | ADOdb_Session:: | ||
- | adodb_sess_open(false, | ||
session_start(); | session_start(); | ||
</ | </ | ||
Line 139: | Line 140: | ||
ADOdb_Session:: | ADOdb_Session:: | ||
- | adodb_sess_open(false, | ||
session_start(); | session_start(); | ||
</ | </ | ||
Line 147: | Line 147: | ||
Create this table in your database. | Create this table in your database. | ||
- | ==== MySQL ==== | + | ==== MySQL or PDO MySQL ==== |
- | + | ||
- | CREATE TABLE sessions2( | + | < |
- | | + | CREATE TABLE sessions2 ( |
- | | + | sesskey VARCHAR( 64 ) COLLATE utf8mb4_bin |
- | | + | expiry DATETIME NOT NULL , |
- | | + | expireref VARCHAR( 250 ) DEFAULT '', |
- | | + | created DATETIME NOT NULL , |
- | | + | modified DATETIME NOT NULL , |
- | | + | sessdata LONGTEXT, |
- | | + | PRIMARY KEY ( sesskey ) , |
- | | + | INDEX sess2_expiry( expiry ), |
- | ) | + | INDEX sess2_expireref( expireref ) |
+ | ) | ||
+ | </ | ||
+ | |||
+ | <WRAP info> | ||
+ | When [[https:// | ||
+ | Collisions could occur in this case, due to MySQL performing case-insensitive searches by default. | ||
+ | To avoid that, the //sesskey// column should use binary (or a case-sensitive) collation. | ||
+ | </ | ||
==== PostgreSQL ==== | ==== PostgreSQL ==== | ||
Line 228: | Line 237: | ||
$user = $ADODB_SESS_CONN-> | $user = $ADODB_SESS_CONN-> | ||
- | $ADODB_SESS_CONN-> | + | $ADODB_SESS_CONN-> |
system(" | system(" | ||
} | } | ||
Line 267: | Line 276: | ||
will compress and then encrypt the record in the database. | will compress and then encrypt the record in the database. | ||
- | ===== Session Cookie Regeneration ===== | ||
- | The method '' | ||
- | ==== Usage ==== | ||
- | |||
- | <code php> | ||
- | include ' | ||
- | |||
- | session_start(); | ||
- | /* | ||
- | * Approximately every 10 page loads, reset cookie for safety. | ||
- | * This is extremely simplistic example, better | ||
- | * to regenerate only when the user logs in or changes | ||
- | * user privilege levels. | ||
- | */ | ||
- | if ((rand()%10) == 0) | ||
- | adodb_session_regenerate_id(); | ||
- | </ | ||
- | |||
- | This function calls '' | ||
- | |||
- | ===== Vacuum/ | ||
- | |||
- | During session garbage collection, if postgresql is detected, ADOdb can be set to run VACUUM. If mysql is detected, then optimize database could be called.You can turn this on or off using: | ||
- | <code php> | ||
- | $turnOn = true; # or false | ||
- | ADODB_Session:: | ||
- | </ | ||
- | The default is optimization is disabled. | ||
- | ===== Backwards | + | ===== Backwards |
The older method of connecting to ADOdb using global variables is now deprecated, and **will be removed** in ADOdb version 6.0: | The older method of connecting to ADOdb using global variables is now deprecated, and **will be removed** in ADOdb version 6.0: | ||
Line 306: | Line 287: | ||
$ADODB_SESSION_USER =' | $ADODB_SESSION_USER =' | ||
$ADODB_SESSION_PWD =' | $ADODB_SESSION_PWD =' | ||
- | $ADODB_SESSION_DB ='phplens'; | + | $ADODB_SESSION_DB ='employees'; |
include ' | include ' |
v5/session/session_index.txt · Last modified: 2023/04/08 18:08 by dregad