1. <?php
  2. /**
  3. * Validates cookie data with fallback logic.
  4. *
  5. * @param array $expected_cookies An array of expected cookie names and their expected values.
  6. * @param array $fallback_values An array of fallback values to use if a cookie is missing or invalid.
  7. * @return array An associative array containing validated cookie values. Returns an empty array on fatal error.
  8. */
  9. function validateCookies(array $expected_cookies, array $fallback_values): array
  10. {
  11. $validated_cookies = [];
  12. foreach ($expected_cookies as $cookie_name => $expected_value) {
  13. // Check if the cookie exists
  14. if (isset($_COOKIE[$cookie_name])) {
  15. $actual_value = $_COOKIE[$cookie_name];
  16. // Validate the cookie value
  17. if ($actual_value === $expected_value) {
  18. $validated_cookies[$cookie_name] = $actual_value;
  19. } else {
  20. // Use fallback value if the cookie is invalid
  21. $validated_cookies[$cookie_name] = $fallback_values[$cookie_name] ?? null; //Use null if fallback is not defined.
  22. }
  23. } else {
  24. // Use fallback value if the cookie is missing
  25. $validated_cookies[$cookie_name] = $fallback_values[$cookie_name] ?? null; //Use null if fallback is not defined.
  26. }
  27. }
  28. return $validated_cookies;
  29. }
  30. //Example Usage:
  31. /*
  32. $expected_cookies = [
  33. 'theme' => 'dark',
  34. 'language' => 'en',
  35. 'user_id' => '123'
  36. ];
  37. $fallback_values = [
  38. 'theme' => 'light',
  39. 'language' => 'en',
  40. 'user_id' => '0'
  41. ];
  42. $validated_data = validateCookies($expected_cookies, $fallback_values);
  43. print_r($validated_data);
  44. */
  45. ?>

Add your comment