<?php
/**
* Logs session cookie operations for non-production use with fallback.
*
* This script logs actions related to session cookies (set, get, delete)
* to a file. It includes fallback mechanisms to ensure logging continues
* even if the primary logging method fails. This is intended for
* non-production environments.
*/
// Configuration
$log_file = 'session_cookie_log.txt'; // Primary log file
$backup_log_file = 'session_cookie_log_backup.txt'; // Backup log file
$log_level = 'debug'; // Logging level (debug, info, warning, error)
// Helper function to log messages
function log_message($level, $message) {
$timestamp = date('Y-m-d H:i:s');
$log_entry = "[$timestamp] [$level] $message\n";
// Attempt to log to the primary file
if (file_put_contents($log_file, $log_entry, FILE_APPEND | LOCK_EX)) {
return true; // Success
}
// Fallback: attempt to log to the backup file
if (file_put_contents($backup_log_file, $log_entry, FILE_APPEND | LOCK_EX)) {
return true; // Success
}
// If both fail, log to the screen (for debugging/troubleshooting)
echo "Logging failed. Failed to write to $log_file and $backup_log_file.\n";
echo $log_entry;
return false; // Failure
}
// Session start
session_start();
// Function to log session cookie operations
function log_session_operation($operation, $cookie_name, $cookie_value = null) {
if ($log_level == 'debug') {
log_message('debug', "Session Operation: $operation - Cookie: $cookie_name ($cookie_value)");
}
}
// Example usage - simulate session operations
if (isset($_SESSION['user_id'])) {
log_session_operation('get', 'user_id');
}
if (isset($_COOKIE['session_id'])) {
log_session_operation('get', 'session_id');
}
if (isset($_SESSION['username'])) {
log_session_operation('set', 'username', $_SESSION['username']);
}
if (isset($_COOKIE['remember_me'])) {
log_session_operation('set', 'remember_me', $_COOKIE['remember_me']);
}
if (isset($_SESSION['last_login'])) {
log_session_operation('set', 'last_login', $_SESSION['last_login']);
}
if (isset($_SESSION['user_id'])) {
unset($_SESSION['user_id']);
log_session_operation('delete', 'user_id');
}
if (isset($_COOKIE['remember_me'])) {
unset($_COOKIE['remember_me']);
setcookie('remember_me', '', time() - 3600); //Force cookie to expire
log_session_operation('delete', 'remember_me');
}
//Cleanup - move old log files to backup
if (file_exists($backup_log_file)) {
rename($backup_log_file, $log_file);
unlink($backup_log_file);
}
?>
Add your comment