Php 代码点火器-Can';t更改后重新登录";cookie“U域”;

Php 代码点火器-Can';t更改后重新登录";cookie“U域”;,php,codeigniter,cookies,session-variables,session-cookies,Php,Codeigniter,Cookies,Session Variables,Session Cookies,我的Codeigniter会话使用了默认值 $config['cookie_domain'] = ""; 但现在我需要能够在上使用domain.com上的CodeIgniter会话 subdomain1.domain.com subdomain2.domain.com 所以我在codeigniter手册中看到可以设置 $config['cookie_domain'] = ".domain.com"; 额外的点将使域和子域共享所有ci_会话。这工作完美 但是,将cookie\u domai

我的Codeigniter会话使用了默认值

$config['cookie_domain'] = "";
但现在我需要能够在上使用domain.com上的CodeIgniter会话

  • subdomain1.domain.com
  • subdomain2.domain.com
所以我在codeigniter手册中看到可以设置

$config['cookie_domain'] = ".domain.com";
额外的点将使域和子域共享所有ci_会话。这工作完美

但是,将
cookie\u domain
更改为
”.domain.com“
后,无法重新登录系统,除非我在chrome设置中手动删除cookie
ci\u会话

我不能要求所有用户删除他们的cookie,所以我需要找到一种方法。我尝试了所有这些:

delete_cookie('ci_session');
setcookie('ci_session', '', time()-3600);
$this->session->sess_destroy();
unset($this->session->userdata);
$this->session->unset_userdata( <array with all the session keys> )
foreach ($_COOKIE as $key=>$cookie)
setcookie($key, '', time() - 9999999);

此外,在所有这些使cookie过期的命令之后。Chrome仍然表示ci_会话cookie将在2周后过期。这就好像它完全忘记了函数
setcookie

将当前的
$config[sess\u cookie\u name]
ci\u session
-更改为类似
new\u cookie


然后浏览器将查找不存在的
new\u cookie
名称,从而强制所有用户使用新cookie

将当前
$config[sess\u cookie\u name]
ci\u session
更改为类似
new\u cookie


然后浏览器将查找不存在的
new\u cookie
名称,从而强制所有用户使用新cookie

将当前
$config[sess\u cookie\u name]
ci\u session
更改为类似
new\u cookie


然后浏览器将查找不存在的
new\u cookie
名称,从而强制所有用户使用新cookie

将当前
$config[sess\u cookie\u name]
ci\u session
更改为类似
new\u cookie



然后浏览器将查找不存在的
new_cookie
名称,从而强制所有用户使用新cookie

这是一个好主意,但我也使用数据库表ci_sessions$config['sess_table_name']=“ci_sessions';不是所有的条目都被弄乱了吗?您的表名可以是您想要的任何名称-保留为ci_会话。它不需要匹配cookie名称。我指的是数据库中的行,但我只是注意到任何行中都没有“ci_会话”,所以当它们变老时,它们会被删除。我猜?是的-它会自行修复-随着时间的推移,它们只是正常的过期会话。“cookie名称”可以是您想要的任何名称-它与您的数据库或数据库记录无关。无论如何,它是有效的!如果你在我面前,我会吻你!我真不敢相信这个答案有多快,多么简单,多么可靠,不可能有错误,谢谢!你回答得太快了,所以我几分钟后才能接受这是个好主意,但我也在使用数据库表ci_sessions$config['sess_table_name']='ci_sessions';不是所有的条目都被弄乱了吗?您的表名可以是您想要的任何名称-保留为ci_会话。它不需要匹配cookie名称。我指的是数据库中的行,但我只是注意到任何行中都没有“ci_会话”,所以当它们变老时,它们会被删除。我猜?是的-它会自行修复-随着时间的推移,它们只是正常的过期会话。“cookie名称”可以是您想要的任何名称-它与您的数据库或数据库记录无关。无论如何,它是有效的!如果你在我面前,我会吻你!我真不敢相信这个答案有多快,多么简单,多么可靠,不可能有错误,谢谢!你回答得太快了,所以我几分钟后才能接受这是个好主意,但我也在使用数据库表ci_sessions$config['sess_table_name']='ci_sessions';不是所有的条目都被弄乱了吗?您的表名可以是您想要的任何名称-保留为ci_会话。它不需要匹配cookie名称。我指的是数据库中的行,但我只是注意到任何行中都没有“ci_会话”,所以当它们变老时,它们会被删除。我猜?是的-它会自行修复-随着时间的推移,它们只是正常的过期会话。“cookie名称”可以是您想要的任何名称-它与您的数据库或数据库记录无关。无论如何,它是有效的!如果你在我面前,我会吻你!我真不敢相信这个答案有多快,多么简单,多么可靠,不可能有错误,谢谢!你回答得太快了,所以我几分钟后才能接受这是个好主意,但我也在使用数据库表ci_sessions$config['sess_table_name']='ci_sessions';不是所有的条目都被弄乱了吗?您的表名可以是您想要的任何名称-保留为ci_会话。它不需要匹配cookie名称。我指的是数据库中的行,但我只是注意到任何行中都没有“ci_会话”,所以当它们变老时,它们会被删除。我猜?是的-它会自行修复-随着时间的推移,它们只是正常的过期会话。“cookie名称”可以是您想要的任何名称-它与您的数据库或数据库记录无关。无论如何,它是有效的!如果你在我面前,我会吻你!我真不敢相信这个答案有多快,多么简单,多么可靠,不可能有错误,谢谢!不过你回答得太快了,所以我几分钟后才能接受
$config['sess_expiration']      = 1209600; // 2 weeks