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.do
It looks like the gist of your issue is reading a cookie set in domain.com from sub.domain.com.
Add
session.cookie_domain = .domain.com
to your php.ini
to make this happen. If you're on a shared hosting enviroment and can't modify your ini file, try having this somewhere in your code:
ini_set("session.cookie_domain", ".domain.com");
You should now be able to access cookies set by domain.com on subdomain.domain.com.
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;
}