我对所有的用户数据都使用php会话(不是cookie,除了会话id cookie),当一个用户进入他们的个人资料user.mydomain.com时,他们会立即被“注销”,直到删除子域。
是否有一种方法可以接受来自所有域的会话,只要它的*.mydomain.com
发布于 2009-03-13 23:06:48
这里有4个选项。
将此代码放入您的php.ini:
session.cookie_domain = ".example.com"
或在您的.htaccess中:
php_value session.cookie_domain .example.com
或者作为脚本中的第一件事:
ini_set('session.cookie_domain', '.example.com' );
或者在您站点的php-fpm池配置中:
php_value[session.cookie_domain] = .example.com
发布于 2012-02-25 00:16:23
if(isset($_COOKIE['session_id']))
session_id($_COOKIE['session_id']);
Zend_Session::start(); //or session_start();
if(!isset($_COOKIE['session_id']))
setcookie('session_id', session_id(), 0, '/', '.yourdomain.com');
如果你像我一样对不完整或糟糕的答案感到沮丧,这是你的救世主。它就是这样的。
发布于 2016-01-18 21:23:52
更改核心函数文件顶部的会话名称,如
session_name('mysession');
然后在php页面中使用以下代码
session_set_cookie_params(0,"/",".example.com",FALSE,FALSE);
setcookie(session_name(), session_id(),0,"/","example.com");
session_start();
最后,更改子域的默认会话名称,并删除子域核心函数文件中的默认cookie,如下所示:
/*default session name*/
session_name("mysession");
/*remove the PHPSESSID and default session name from subdomain's cookie*/
setcookie( "mysession", "",1,"/" );
setcookie( "PHPSESSID", "",1,"/" );
如果您继续使用您的cookie名称作为PHPSESSID,只需使用删除所有函数
"mysession" string like session_name('mysession'), setcookie( "mysession", "",1,"/" );
然后检查浏览器现有的cookies,只需删除域和子域的所有cookies,并重复该过程。
https://stackoverflow.com/questions/644920
复制相似问题