この記事では主に、redis を使用して laravel5.6 と thinkphp3.2 の間でセッションを共有する解決策を紹介します。これには一定の参考値があります。今、共有します。必要な友人はそれを参照できます。
実践 このうち、過去にthinkphp3.2で開発していたプロジェクトは機能のアップデートが必要となり、アップデートされた機能はlaravel5.6で開発する予定です。
解決する必要のある重要な問題がいくつかあり、その 1 つはユーザー認証の問題です。つまり、システム 1 がログインするだけで、システム 2 はそのログイン情報を自動的に認識します。つまり、laravelとthinphpの共有セッションの問題という本質を解決する必要があります。
セッションはストレージに Redis を使用します。 Thinkphp と laravel は一緒に redis にアクセスし、同じ cookie に基づいて redis に保存されている認証されたユーザー情報を自動的に取得します。
thinkphp3.2 には統合セッションの redis サポートがありません。現時点では、php の設定を使用して有効にします。 Index.php に、次の 2 行のステートメントを追加します。
ini_set("session.save_handler", "redis"); ini_set("session.save_path", "tcp://redis:6379");
これを config.php 構成ファイルに追加することもできます
現時点では、thinkphp がセッションを保存するときに、 PHPREDIS_SESSION がプレフィックスとして保存されます。
laravel で redis を開く方法は比較的複雑です。具体的な情報については、公式ドキュメントを参照して、composer を使用して Predis をインストールし、関連する構成を実行する必要があります。
laravel は PHP の組み込みセッションを完全に非推奨にしたためです。したがって、$_SESSION を通じて情報を取得する方法はありません (未定義の変数エラーが発生する可能性もあります)。なぜなら、laravelのCookieは暗号化されているからです。そのため、laravel独自のCookieを利用してCookie情報を取得することはできません。
具体的な実装アイデアは次のとおりです。
1 ネイティブ Cookie を取得します。
2 PHPREDIS_SESSION を結合してキーを形成します。
3 redis を使用して、キーに格納されている値を直接取得します。
... use Illuminate\Support\Facades\Redis; ... $cookie = $_COOKIE['PHPSESSID']; $session = Redis::get('PHPREDIS_SESSION:' . $cookie);
この $session は、thinkphp システムのセッション値です。
上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
以上がlaravel5.6 と thinkphp3.2 は redis を使用してセッションを共有しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。