将会话应用到正确的位置


Applying session to correct location?

我不知道那个问题的措辞是否正确,但我措辞非常仔细。基本上是这样的。我在本地机器上有两个目录。

/server/core/

/server/clients/

"核心"是处理所有数据处理的东西,这样做是为了如果我需要更新我的应用程序,那么我只需要更新"核心"和所有"客户端",包括和调用位于"核心"中的函数将自动更新。我想这个术语应该是"动态网站"。

基本上是这样的。我目前使用的是非常基本的课程,只是为了开始学习,但一旦我达到更高的水平,我肯定会改变一些东西。目前在我的"核心"我有以下代码位于login.php

if(canLogin) {
    if(!isset($_SESSION)){session_start();};
    $_SESSION['email'] = $email;
    header('Location: index.php');
}

将加载位于"client"目录下的'index.php'。我是这样做的。

以下代码位于/server/core/
function createIndex($SQLConnection, $SQLConfig, $PDOConnection) {
    global $action;
    global $days;
    if(!isset($_SESSION)){session_start();} 
    if(empty($_SESSION['email'])) 
    {
        createLogin($PDOConnection, $SQLConfig);
    }
}
下面的代码位于/server/clients/
<?php
    $Configuration = include_once 'inc/Configuration.php';
    include_once 'inc/Connection.php';
    include_once '/opt/lampp/htdocs/eDashboard2/core/index.php';
    createIndex($NormalConnection, $Configuration, $PDOConnection);
?>

它在核心上生成Index.php文件,并使用echo将网站转发回来。请忽略多个SQL连接,因为它是用于测试,将被删除。

基本上,问题是,会话没有被保存,或者…如果我必须猜测,那么会话将存储在/server/core/而不是/server/clients/

最终的结果是用户总是被要求登录,而不是像在"仅限客户端"版本中那样能够继续访问网站。((客户端版本只是一个静态网站,就像你通常看到的那样,动态方法是我自己尝试学习的经验))

我怎么做才能使会话将为登录的人存储

使用session_set_cookie_params将目录设置为父目录:

<?php
$params = session_get_cookie_params();
session_set_cookie_params($params['lifetime'], '/server');

如果会话也必须存在于你的域的子域之间,你需要一个额外的参数:

session_set_cookie_params($params['lifetime'], '/server', '.website.com');