|
一个有用的函数session_set_save_handler ~ admin
session_set_save_handler
(PHP4 >= 4.0b4) session_set_save_handler -- Sets user-level session storage functions Description 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 functio ns which are used for storing and retrieving data associated with a se ssion. This is most useful when a storage method other than those supp lied 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 us er in your php.ini file for session_set_save_handler() to take effect. The following example provides file based session storage similar to t he PHP sessions default save handler files. This example could easily be extended to cover database storage using your favorite PHP supporte d 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 ?> |