I need to use main domain cookies for my sub domains as with higher priority when both sub and main domain cookies exists.
The problem is when I'm on sub.domain.com and there exist cookies for
The PHP global $_COOKIE
contains $_COOKIE['data'] == 'sub.domain.com'
.
I would like to check if there is also a .domain.com cookie and use it.
How do I read the main cookie when I'm on a sub domain with an existing sub domain cookie?
There is a $_SERVER ['HTTP_COOKIE']
variable that contains both sub domain and main domain cookie variables with the same name as one large string. In the following simple piece of code the $cookie_variable
array will contain both values of specific variables:
if( 'sub.domain.com' == $_SERVER['HTTP_HOST']) {
$var_name = 'somedata';
$domains_counter = 0;
foreach(explode(';', $_SERVER['HTTP_COOKIE']) as $cookie_variable_string) {
if( false !== strpos($cookie_variable_string, $var_name.'=') ) {
$cookie_variable[$domains_counter] = urldecode(
trim(
substr(
$cookie_variable_string,
strpos($cookie_variable_string, $var_name) + strlen($var_name.'=')
)
)
);
$domains_counter++;
}
}
var_dump($cookie_variable);
}
Here's a function that gets all variables:
public static function get_http_cookie_variables() {
$domains_counter = [];
foreach(explode(';', $_SERVER['HTTP_COOKIE']) as $cookie_variable_string) {
$key_value = explode('=', $cookie_variable_string);
$cookie_var_name = trim($key_value[0]);
if(is_null($domains_counter[$cookie_var_name])) {
$domains_counter[$cookie_var_name] = 0;
}
$http_cookie_variables[$cookie_var_name][$domains_counter[$cookie_var_name]] = urldecode(trim($key_value[1]));
$domains_counter[$cookie_var_name]++;
}
return $http_cookie_variables;
}