此问题在此处已有答案:
How can I manage separate session states for two different websites on the same hosting using php(9个回答)
10小时前关闭。
我在Ubuntu 22.04上用PHP和MySQL安装了Apache 2。我创建了两个内部网站,site1是https://web.domain.cz,site2在同一个虚拟主机上,别名为https://web.domain.cz/second(这是第一个网站的某种管理)
这是我的vhost配置
<VirtualHost *:443>
ServerName web.domain.cz
DocumentRoot /var/www/web
SSLEngine on
SSLCertificateFile /etc/ssl/certs/xxx.pem
SSLCertificateKeyFile /etc/ssl/private/xxx.key
<Directory /var/www/web>
Require all granted
</Directory>
<Files dbh.php>
Require all denied
</Files>
Alias /second /var/www/second
<Directory /var/www/second>
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName web.domain.cz
Redirect / https://web.domain.cz/
</VirtualHost>
字符串
疯狂的是,当我在一个网站上注销(session_destroy();
)时,我在第二个网站上注销。当我在一个网站上更改(相同)会话变量时,它将在第二个网站上更改(例如,我在会话变量中存储了当前排序顺序,如果我在一个网站上更改排序,它也将在第二个网站上更改)。
为什么会话变量是共享的,我可以用它做什么?
(我不使用任何PHP框架)
1条答案
按热度按时间lsmd5eda1#
PHP会话基于cookie,默认情况下cookie按域保存,因为您的两个站点使用相同的域,所以它们共享相同的会话。
您可以通过在会话启动时提供区分不同站点的信息来覆盖此行为,例如:
字符串