require_once('connections/dbinfo/DataBaseConnInfoMysql.php'); function customNewConnect(){ $conn_new = new DataBaseConnInfoMysql(); $dsn = 'mysql:host='. $conn_new->host.';dbname='. $conn_new->dbname; if ($conn_new->port) { $dsn .= ";port=".$conn_new->port; } try { // Attempt to establish a database connection $pdo = new PDO($dsn, $conn_new->username, $conn_new->password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Check if the database connection is valid if ($pdo) { return $pdo; } else { echo "Database Connection Error: Failed to establish connection"; return false; } } catch(PDOException $e) { // Handle database connection errors echo "Database Connection Error: " . $e->getMessage() . "
"; echo "DSN: " . $dsn; // Output the DSN for debugging return false; } } function CustomQueryPDO($query) { $conn_new = new DataBaseConnInfoMysql(); $dsn = 'mysql:host='. $conn_new->host.';dbname='. $conn_new->dbname; if ($conn_new->port) { $dsn .= ";port=".$conn_new->port; } try { // Attempt to establish a database connection $pdo = new PDO($dsn, $conn_new->username, $conn_new->password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Check if the database connection is valid if ($pdo) { return $pdo->query($query); } else { echo "Database Connection Error: Failed to establish connection"; return false; } } catch(PDOException $e) { // Handle database connection errors echo "Database Connection Error: " . $e->getMessage() . "
"; echo "DSN: " . $dsn; // Output the DSN for debugging return false; } } // Custom session open function function custom_session_open($save_path, $session_name) { // No need to establish a database connection here return true; // Return true on success } // Custom session close function function custom_session_close() { // No need to close the database connection here return true; // Return true on success } // Custom session read function function custom_session_read($session_id) { $pdo = customNewConnect(); try { $query = 'SELECT session_data FROM active_sessions WHERE session_id = ?'; $stmt = $pdo->prepare($query); $stmt->bindParam(1, $session_id); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_ASSOC); // Use fetch instead of fetchAll if ($row) { return $row['session_data']; // Return session data } else { return ''; // Return empty string if session data not found } } catch(PDOException $e) { error_log("Error reading session data: " . $e->getMessage()); return false; // Return false on failure } } // Custom session write function // Custom session write function function custom_session_write($session_id, $session_data) { $query = "INSERT INTO active_sessions (session_id, session_data, last_updated) VALUES (?, ?, NOW()) ON DUPLICATE KEY UPDATE session_data = VALUES(session_data), last_updated = VALUES(last_updated)"; try { $pdo = customNewConnect(); $stmt = $pdo->prepare($query); $stmt->bindParam(1, $session_id); $stmt->bindParam(2, $session_data); $stmt->execute(); return true; // Return true on success } catch(PDOException $e) { echo "Error writing session data: " . $e->getMessage(); return false; // Return false on failure } } // Custom session destroy function function custom_session_destroy($session_id) { $query = "DELETE FROM active_sessions WHERE session_id = :session_id"; try { $stmt = CustomQueryPDO($query); if ($stmt) { $stmt->bindParam(':session_id', $session_id); $stmt->execute(); return true; // Return true on success } } catch(PDOException $e) { echo "Error destroying session: " . $e->getMessage(); } return false; // Return false on failure } // Custom session garbage collection function function custom_session_gc($maxlifetime) { $inactive_threshold = time() - $maxlifetime; $query = "DELETE FROM active_sessions WHERE last_updated < FROM_UNIXTIME(:inactive_threshold)"; try { $stmt = CustomQueryPDO($query); if ($stmt) { $stmt->bindParam(':inactive_threshold', $inactive_threshold, PDO::PARAM_INT); $stmt->execute(); return true; // Return true on success } } catch(PDOException $e) { echo "Error performing garbage collection: " . $e->getMessage(); } return false; // Return false on failure } // Set custom session handling functions session_set_save_handler( 'custom_session_open', 'custom_session_close', 'custom_session_read', 'custom_session_write', 'custom_session_destroy', 'custom_session_gc' );