1
タイトルが読み取ると、セッション変数がルート上で永続的になることはありません。Slim 3セッション変数がルート上で永続的でない
私はindex.php
のVERYの初めにsession_start()
と呼んでいます。
ルートルート:私はセッション変数が非存在であることがわかり、私app.log
で
$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;
});
。
しかし、これは、ログインに成功した後に私のコードです:私もテスト目的のために、ここでロガーを使用して、それはそれが正しいIDを保存したことを私に示した(/ログインのポスト)
if ($customer !== false && password_verify($password, $customer['password'])) {
$_SESSION['cus_id'] = $customer['id'];
return $this->view->render($response, "homepage.phtml", [ 'logged_in' => true]);
}
。
私はまた、まったく同じ結果を持つさまざまな追加のライブラリを使用しました。 公式のドキュメントもチェックしましたが、無駄です。
質問: どのようにセッション変数をルート全体で永続化するのですか? セッションを保存する別の方法はありますか?このログインの問題を解決する別の方法ですか?
明確にするために、 '$ app-> post( '/ login')'ルートを呼び出すことで正常にログインした後、ホームページテンプレートをレンダリング*していますが、実際に*ホームルートにリダイレクトしていません。これは、あなたのホームルートが別の後のリクエストまで呼び出されないことを意味します。 – Wolf