今日は私がtp6を学習していた時に、思わず唸ってしまった落とし穴について解説します。
非常にわかりにくい落とし穴に遭遇しました。つまり、セッションはコントローラー間で使用できず、公式ドキュメントにはコメントがありません。
まずは正式な使用方法を見てみましょう。
使用session需要引入session类可以直接使用think\facade\session,
これ以上は言いませんが、注意していただきたいのは、落とし穴があるということです!!!罠がやってくる!!!罠がやってくる!!!
session
この機能はデフォルトでは有効になっていません (API アプリケーションは通常、この機能を使用する必要はありませんsession
)。この機能を使用する必要がある場合はSeesion
、次のミドルウェア定義をグローバル ミドルウェア定義ファイルに追加する必要があります。
'think\middleware\sessionInit'
マルチアプリケーション モードで、一部のアプリケーションのみに使用する場合は、アプリケーション ミドルウェア定義ファイルで個別に有効にすることもできます。
グローバル ミドルウェア ファイルは、アプリ ディレクトリ内の middleware.php です。
これにはセッションの初期化があります。デフォルトではコメント化されています。コメントを解除するだけです。その後、セッションを使用できるようになります。通常はオンになっています。
composer require topthink/think-multi-app
すべての準備が整ったので、デバッグ時に次のコンテンツを使用しますか? ? 特にログインに Cookie を保存する必要がある場合
echo json_encode();exit;
echo json_encode($arr);die();
私が注目したいのは、椎茸の苦手なところ!
tp6 がセッションまたは Cookie を初期化した後、セッションまたは Cookieの後に die または exit を使用すると、セッションまたは Cookieが消えてしまいます。!!消えるだろう!!!消えるだろう!!!
解決
1. 代わりにキャッシュを使用する
2. 代わりに、ネイティブの $_セッションと $_COOKIEを使用できます。
上記の記事は、thinkphp6でCookie とセッションが使用できない問題の解決策についてのすべてです。