mvl*_*adk 5 php cookies subdomain
当子域和主域cookie都存在时,我需要为我的子域使用主域cookie,因为它具有更高的优先级.
问题是当我在sub.domain.com上并且存在cookie时
PHP全局$_COOKIE
包含$_COOKIE['data'] == 'sub.domain.com'
.我想检查是否还有一个.domain.com cookie并使用它.
当我在具有现有子域cookie的子域上时,如何读取主cookie?
有一个$_SERVER ['HTTP_COOKIE']
变量包含子域和主域 cookie 变量,其名称与一个大字符串相同。在下面的简单代码中,$cookie_variable
数组将包含特定变量的两个值:
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);
}
Run Code Online (Sandbox Code Playgroud)
这是一个获取所有变量的函数:
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;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10295 次 |
最近记录: |