* @version 1.1 * @since 1999 */ /* DROP TABLE IF EXISTS session_tbl; CREATE TABLE session_tbl ( session_id char(32) NOT NULL default '', session_data mediumtext NOT NULL, last_access timestamp(14) NOT NULL, PRIMARY KEY (session_id), KEY last_access (last_access) ) TYPE=MyISAM; */ function mysqlSessionOpen($save_path, $sess_name) { global $sess_mysql; if (!isset($sess_mysql['dbh']) && (!isset($sess_mysql['hostname']) || !isset($sess_mysql['user']) || !isset($sess_mysql['password']) || !isset($sess_mysql['db']) || !isset($sess_mysql['table']))) { trigger_error('mysqlSessionOpen(): Database session handling global variables not specified.', E_USER_WARNING); } // Connect and select. if (!$sess_mysql['dbh']) { $sess_mysql['dbh'] = @mysql_connect($sess_mysql['hostname'], $sess_mysql['user'], $sess_mysql['password']); } @mysql_select_db($sess_mysql['db'], $sess_mysql['dbh']); // Check for errors if (mysql_error($sess_mysql['dbh'])) { trigger_error('mysqlSessionOpen(): Cannot connect to database. ' . mysql_error($sess_mysql['dbh']), E_USER_WARNING); return false; } return true; } function mysqlSessionClose() { return true; } function mysqlSessionRead($session_id) { global $sess_mysql; // Select the data belonging to session $session_id from the MySQL session table $qid = mysql_query("SELECT session_data FROM " . $sess_mysql['table'] . " WHERE session_id = '" . mysql_real_escape_string($session_id) . "'", $sess_mysql['dbh']); // Check for errors if (mysql_error($sess_mysql['dbh'])) { trigger_error('mysqlSessionRead(): Failed to read sessions.' . mysql_error($sess_mysql['dbh']), E_USER_WARNING); return ''; } // Return the session data that was found if (mysql_num_rows($qid) == 1) { $row = mysql_fetch_row($qid); return $row[0]; } // NOTICE: Output is expected to be an empty string always rather than 'false'. return ''; } function mysqlSessionWrite($session_id, $session_data) { global $sess_mysql; // Write the serialized session data ($session_data) to the MySQL session table mysql_query("REPLACE INTO " . $sess_mysql['table'] . "(session_id, session_data, last_access) VALUES ('" . mysql_real_escape_string($session_id) . "', '" . mysql_real_escape_string($session_data) . "', null)", $sess_mysql['dbh']); // Check for errors if (mysql_error($sess_mysql['dbh'])) { trigger_error('mysqlSessionWrite(): Failed to write session. ' . mysql_error($sess_mysql['dbh']), E_USER_WARNING); return false; } return true; } function mysqlSessionDestroy($session_id) { global $sess_mysql; // Delete from the MySQL table all data for the session $session_id mysql_query("DELETE FROM " . $sess_mysql['table'] . " WHERE session_id = '" . mysql_real_escape_string($session_id) . "'", $sess_mysql['dbh']); // Check for errors if (mysql_error($sess_mysql['dbh'])) { trigger_error('mysqlSessionDestroy(): Failed to delete old session. ' . mysql_error($sess_mysql['dbh']), E_USER_WARNING); return false; } return true; } function mysqlSessionGarbage($max_lifetime=4000) { global $sess_mysql; // Delete old values from the MySQL session table $qid = mysql_query("DELETE FROM " . $sess_mysql['table'] . " WHERE UNIX_TIMESTAMP(last_access) < " . (time() - $max_lifetime), $sess_mysql['dbh']); // Check for errors if (mysql_error($sess_mysql['dbh'])) { trigger_error('mysqlSessionGarbage(): Failed to delete old session. ' . mysql_error($sess_mysql['dbh']), E_USER_WARNING); return false; } return true; } ?>