Russian Ukraine English
Catalog RSS


(PHP 4 >= 4.0b4)

session_set_save_handler -- Sets user-level session storage functions


void session_set_save_handler (string open, string close, string read, string write, string destroy, string gc)

session_set_save_handler() sets the user-level session storage functions which are used for storing and retrieving data associated with a session. This is most useful when a storage method other than those supplied by PHP sessions is preferred. i.e. Storing the session data in a local database.

Note: You must set the configuration option session.save_handler to user in your php.ini file for session_set_save_handler() to take effect.

The following example provides file based session storage similar to the PHP sessions default save handler files. This example could easily be extended to cover database storage using your favorite PHP supported database engine.

Example 1. session_set_save_handler() example

<?php  function open ($save_path, $session_name) {   global $sess_save_path, $sess_session_name;           $sess_save_path = $save_path;   $sess_session_name = $session_name;   return(true); }  function close() {   return(true); }  function read ($id) {   global $sess_save_path, $sess_session_name;    $sess_file = "$sess_save_path/sess_$id";   if ($fp = @fopen($sess_file, "r")) {     $sess_data = fread($fp, filesize($sess_file));     return($sess_data);   } else {     return("");   }  }  function write ($id, $sess_data) {   global $sess_save_path, $sess_session_name;    $sess_file = "$sess_save_path/sess_$id";   if ($fp = @fopen($sess_file, "w")) {     return(fwrite($fp, $sess_data));   } else {     return(false);   }  }  function destroy ($id) {   global $sess_save_path, $sess_session_name;           $sess_file = "$sess_save_path/sess_$id";   return(@unlink($sess_file)); }  /*********************************************  * WARNING - You will need to implement some *  * sort of garbage collection routine here.  *  *********************************************/ function gc ($maxlifetime) {   return true; }  session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");  session_start();  // proceed to use sessions normally  ?>