【问题标题】:Slim 3 Session variables not persistent over routesSlim 3 会话变量在路由上不持久
【发布时间】:2017-05-23 05:27:47
【问题描述】:

正如标题所述,我无法让我的会话变量在路由上保持不变。

我在index.php 的最开头调用session_start()

根路由:

$app->get('/', function (Request $request, Response $response) {
    $this->logger->addInfo("session id: " . $_SESSION['cus_id']);

    $response = $this->view->render($response, "homepage.phtml", [
        'test' => 'testing something',
        'logged_in' => isset($_SESSION['cus_id'])
    ]);

    return $response;
});

在我的app.log 中,我看到会话变量不存在。

但这是我成功登录后的代码:(发布到 /login)

if ($customer !== false && password_verify($password, $customer['password'])) {
        $_SESSION['cus_id'] = $customer['id'];

        return $this->view->render($response, "homepage.phtml", [ 'logged_in' => true]);
    }

我还在这里使用了记录器进行测试,它告诉我它保存了正确的 id。

我还使用了各种额外的库,结果完全相同。 我也查了官方文档,没用。

问题: 如何让会话变量在整个路由中保持不变? 还是另一种保存会话的方法?和/或其他解决此登录问题的方法?

【问题讨论】:

  • 澄清一下,在成功登录并调用$app->post('/login') 路由后,您将呈现主页模板,但实际上并未重定向到主页路线。这意味着您的 home 路由在以后的另一个请求之前不会被调用。

标签: php slim slim-3


【解决方案1】:

升级服务器后我遇到了同样的问题,导致 php.ini 文件中出现了新的服务器设置。 对我来说,php.ini 中的 session.auto_start=1 成功了。

【讨论】:

    猜你喜欢
    • 2015-08-16
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 2017-01-08
    • 2021-04-09
    • 1970-01-01
    相关资源
    最近更新 更多