在同一服务器上的两个不同文件夹上使用相同的 PHP 会话


Use the same PHP session on two different folders on the same server

我的网络空间Folder1Folder2上有两个文件夹。这两个文件夹都有 PHP 内容。在Folder1 index.php中,我正在设置一个会话变量,我想在Folder2中知道它。我已经在寻找解决方案,我也发现了一些session_set_cookie_params()的东西 - 但它不起作用。以下是我正在使用的文件:

<?php
// index.php inside /blog/Folder1/
session_name('s');
session_set_cookie_params(0, '/', 'www.mydomain.de');
session_cache_limiter('private_no_expire');
session_start();
$_SESSION['auth_key'] = 'abc';
echo 'Key assigned';
?>

我的第二个文件正在尝试访问已经设置的会话变量:

<?php
// index.php inside /blog/Folder2/
session_name('s');
session_set_cookie_params(0, '/', 'www.mydomain.de');
session_cache_limiter('private_no_expire');
session_start();
if($_SESSION['auth_key'] != 'abc')
{
    header('HTTP/1.0 404 Not Found');
    exit;
}
// do more stuff ...
?>

我做错了什么?

你的php没有错,但要调试它,你需要理解这一点,出于安全原因,http不会为顶级域设置cookie,因此你需要使用二级域名,如下所示:

session_set_cookie_params(0, '/', '.mydomain.de');

你注意到我用.mydomain.de替换了www.mydomain.de

多一点

确保已设置域,如果没有,您仍然可以使用session_set_cookie_params(0, '/');而无需指示子域索引。