php Apache别名正在共享会话[重复]

w8ntj3qf  于 2023-11-16  发布在  PHP
关注(0)|答案(1)|浏览(97)

此问题在此处已有答案

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框架)

lsmd5eda

lsmd5eda1#

PHP会话基于cookie,默认情况下cookie按域保存,因为您的两个站点使用相同的域,所以它们共享相同的会话。
您可以通过在会话启动时提供区分不同站点的信息来覆盖此行为,例如:

session_start([
    'cookie_path'=>'second'
]);

字符串

相关问题