<?php
/**
* Validates cookie data with fallback logic.
*
* @param array $expected_cookies An array of expected cookie names and their expected values.
* @param array $fallback_values An array of fallback values to use if a cookie is missing or invalid.
* @return array An associative array containing validated cookie values. Returns an empty array on fatal error.
*/
function validateCookies(array $expected_cookies, array $fallback_values): array
{
$validated_cookies = [];
foreach ($expected_cookies as $cookie_name => $expected_value) {
// Check if the cookie exists
if (isset($_COOKIE[$cookie_name])) {
$actual_value = $_COOKIE[$cookie_name];
// Validate the cookie value
if ($actual_value === $expected_value) {
$validated_cookies[$cookie_name] = $actual_value;
} else {
// Use fallback value if the cookie is invalid
$validated_cookies[$cookie_name] = $fallback_values[$cookie_name] ?? null; //Use null if fallback is not defined.
}
} else {
// Use fallback value if the cookie is missing
$validated_cookies[$cookie_name] = $fallback_values[$cookie_name] ?? null; //Use null if fallback is not defined.
}
}
return $validated_cookies;
}
//Example Usage:
/*
$expected_cookies = [
'theme' => 'dark',
'language' => 'en',
'user_id' => '123'
];
$fallback_values = [
'theme' => 'light',
'language' => 'en',
'user_id' => '0'
];
$validated_data = validateCookies($expected_cookies, $fallback_values);
print_r($validated_data);
*/
?>
Add your comment