1. <?php
  2. /**
  3. * Logs session cookie operations for non-production use with fallback.
  4. *
  5. * This script logs actions related to session cookies (set, get, delete)
  6. * to a file. It includes fallback mechanisms to ensure logging continues
  7. * even if the primary logging method fails. This is intended for
  8. * non-production environments.
  9. */
  10. // Configuration
  11. $log_file = 'session_cookie_log.txt'; // Primary log file
  12. $backup_log_file = 'session_cookie_log_backup.txt'; // Backup log file
  13. $log_level = 'debug'; // Logging level (debug, info, warning, error)
  14. // Helper function to log messages
  15. function log_message($level, $message) {
  16. $timestamp = date('Y-m-d H:i:s');
  17. $log_entry = "[$timestamp] [$level] $message\n";
  18. // Attempt to log to the primary file
  19. if (file_put_contents($log_file, $log_entry, FILE_APPEND | LOCK_EX)) {
  20. return true; // Success
  21. }
  22. // Fallback: attempt to log to the backup file
  23. if (file_put_contents($backup_log_file, $log_entry, FILE_APPEND | LOCK_EX)) {
  24. return true; // Success
  25. }
  26. // If both fail, log to the screen (for debugging/troubleshooting)
  27. echo "Logging failed. Failed to write to $log_file and $backup_log_file.\n";
  28. echo $log_entry;
  29. return false; // Failure
  30. }
  31. // Session start
  32. session_start();
  33. // Function to log session cookie operations
  34. function log_session_operation($operation, $cookie_name, $cookie_value = null) {
  35. if ($log_level == 'debug') {
  36. log_message('debug', "Session Operation: $operation - Cookie: $cookie_name ($cookie_value)");
  37. }
  38. }
  39. // Example usage - simulate session operations
  40. if (isset($_SESSION['user_id'])) {
  41. log_session_operation('get', 'user_id');
  42. }
  43. if (isset($_COOKIE['session_id'])) {
  44. log_session_operation('get', 'session_id');
  45. }
  46. if (isset($_SESSION['username'])) {
  47. log_session_operation('set', 'username', $_SESSION['username']);
  48. }
  49. if (isset($_COOKIE['remember_me'])) {
  50. log_session_operation('set', 'remember_me', $_COOKIE['remember_me']);
  51. }
  52. if (isset($_SESSION['last_login'])) {
  53. log_session_operation('set', 'last_login', $_SESSION['last_login']);
  54. }
  55. if (isset($_SESSION['user_id'])) {
  56. unset($_SESSION['user_id']);
  57. log_session_operation('delete', 'user_id');
  58. }
  59. if (isset($_COOKIE['remember_me'])) {
  60. unset($_COOKIE['remember_me']);
  61. setcookie('remember_me', '', time() - 3600); //Force cookie to expire
  62. log_session_operation('delete', 'remember_me');
  63. }
  64. //Cleanup - move old log files to backup
  65. if (file_exists($backup_log_file)) {
  66. rename($backup_log_file, $log_file);
  67. unlink($backup_log_file);
  68. }
  69. ?>

Add your comment