実際のプロジェクトでは、過去のプロジェクトは thinkphp3.2 を使用して開発されており、現在この関数には次の機能が必要です更新予定の機能部分はlaravel5.6を使用して開発する予定です。
問題の説明
解決する必要のある重要な問題がいくつかあり、その 1 つはユーザー認証の問題です。つまり、システム 1 がログインするだけで、システム 2 はそのログイン情報を自動的に認識します。つまり、laravelとthinphpの共有セッションの問題という本質を解決する必要があります。
プログラム設計
セッションはストレージに Redis を使用します。 Thinkphp と laravel は一緒に redis にアクセスし、同じ cookie に基づいて redis に保存されている認証されたユーザー情報を自動的に取得します。
解決策
thinkphp で 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 を開く
laravel で redis を開く方法は比較的複雑です。具体的な情報については、公式ドキュメントを参照して、composer を使用して Predis をインストールし、関連する構成を実行する必要があります。
laravel は thinkphp のセッションを取得します
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 システムのセッション値です。
関連チュートリアルの推奨事項: 「laravel チュートリアル」