ホームページ >バックエンド開発 >PHPチュートリアル >ucenter 同期ログインメカニズム_PHP チュートリアル
PHP 開発に携わっているほとんどの友人は、複数のサイトに同時にログインおよびログアウトし、ユーザーを同期するために使用できる ucenter の存在を知っています。次に、著者が ucenter が同期ログインを実装する方法を紹介します。
まず、サイトは uc_client などのクライアントを導入する必要があります。login を例にとると、ログイン時に最初に外部関数が呼び出されます。uc_client/client.php にある uc_user_login がこのユーザーが存在するかどうかを確認します。ログイン コードの実行を続行し、このユーザー プロセスを検出します。ユーザーが UC に接続する方法 (mysql または http post) を決定し、それに応じてさまざまな関数を使用してユーザーを検出します。検出が完了すると、ローカル ログインが実装され、コードは次のようになります。これを外部関数 uc_user_synlogin を呼び出すと、次のような処理になります。
Uc_user_synlogin は uc_api_post を呼び出して、どのモジュールが使用されるかを認識します。つまり、渡されるパラメーターは user_id です。つまり、これがどのように実装されるかについては詳しく説明しません。 php のインデックスである uc_api に追加し、これらのパラメータに基づいて、その中の通信可能なアプリケーションをすべて読み取ってログインさせます。これは他のプログラムの問題です。
他のアプリケーションへの通知は主に ucenter を使用して各アプリケーションの api/uc.php にデータを送信し、そのデータは uc.php によって受信され、対応するログイン操作が実行されます。これは私が書いたものです。すべての機能を詳しく書きたかったのですが、笑、自分で見つけるのは簡単です。
1. ユーザーxxxが特定のアプリケーションのlogin.phpにユーザー名とパスワードを入力するところから始めましょう。まず、uc_user_login 関数を使用して、uc サーバー上のユーザーとパスワードを確認し、正しい場合は、セッションを書き込み、Cookie を書き込み、アプリケーション メンバーシップ テーブルのログイン IP とログイン時間を更新します。ユーザーはこのプロセスを感じることができません。
2. 次に、uc_user_synlogin を通じて、ユーザー xxx が正常にログインしたことを uc サーバーに通知します。このプロセスでは ajax が使用される場合があり、ユーザーは通知プロセスを感じません。
3. このメッセージを受信した後、UC サーバーはすぐにその配下に、このメッセージを受信する他のすべてのアプリケーションに (同期ログインがバックグラウンドで有効かどうかに関係なく) トークン リングのような xxx ログイン メッセージを送信するように命令しました。実際には、各アプリケーションの uc.php にパラメータを付けてアクセスするだけであり、ユーザーはこのプロセスを感じることができません。
4. 各アプリケーションは、API の下で uc.php に依存して、uc サーバーからメッセージを受信し、uc サーバーの指示に従い、要求されたことをすべて実行します。ここで、ユーザー xxx がプログラムにログインするためのコマンドを受信したら、すぐにそれを実行します。そして、このアプリケーションのセッションを書き込み、p3p を使用して同じドメインまたは別のドメインに Cookie を書き込みます。このプロセスはユーザーには感じられません。
5. 最後に、すべてのプログラムが uc に統合され、xxx が正常にログインしました。ユーザーが www.phpernote.com/bbs からログインした後、www.phpernote.com/ にジャンプしたときにもログインが表示されます。 bbs とニュース システムの両方がバックグラウンドでログインしているためです。
6. アプリケーションと uc サーバー間のセッションが終了します。 興味がありそうな記事