1. ユーザーは discuz にログインし、logging.php ファイルの uc_user_login 関数を通じて投稿されたデータを確認します。つまり、ユーザー名とパスワードを確認します。
2. 検証が成功すると、uc_client の下の client.php ファイルにある関数 uc_user_synlogin が呼び出されます。この関数では、uc_api_post('user', 'synlogin', array('uid'=>$uid) が呼び出されます。 )) が呼び出されます。
3. 次に、この関数は Ucenter の Index.php にデータを渡し、Index.php は渡されたデータを受け取り、モデルの値を user として、action を synlogin として取得します。
4. 次に、Ucenter のindex.php は、foreach ループを通じて、同期ログインを有効にする uc アプリケーション リスト内のアプリケーションに通知します。つまり、get メソッドを使用して、各アプリケーション ディレクトリの API の下にある uc.php にデータを渡します。
5. uc.php は通知を受け取り、取得したデータを処理し、関数 synlogin (uc.php にあります) 内の関数 _authcode を使用してデータを暗号化し (デフォルトではキーとして UC_KEY を使用します)、Cookie を関数_setcookie。
6. 各アプリケーションは、対応するキーを使用して上記の Cookie セットをデコードし、ユーザー ID およびその他のデータを取得します。この値を使用して、ユーザーが他のアプリケーションを通じてログインしたかどうかを判断し、ユーザーが自動的にログインできるようにします。アプリケーションの
Logging.php ------>client.php (uc_client の場合)----->Ucenter------>api/uc.php (他のアプリケーションの場合)
実際、同期ログインを実現する Ucenter の原理は Cookie です。アプリケーションがログインに成功すると、データが Ucenter に転送され、Ucenter が他のアプリケーションにも Cookie を設定するように通知します。これにより、ユーザーは Cookie を通じて自動的にログインできるようになります。他のアプリケーションにアクセスするときに設定されています。
一般的な手順は、まず ucenter をインストールし、次に uc_client フォルダーを独自のプロジェクトにコピーして、いくつかのファイルを構成します
client.php は関数ライブラリに相当します
uc.php はコールバック ファイル
config に相当します。 php は設定ファイルです
同期ログインを設定した 2 つのアプリケーションがある場合、アプリケーションにログインして
include './config.inc.php'; include './uc_client/client.php'; $usernames="kyee"; $passwords="123456"; list($uid, $username, $password, $email) = uc_user_login($usernames, $passwords); if($uid > 0) {
setcookie("username",$username,time()+intval(24*3600)); echo uc_user_synlogin($uid); echo '登录成功'; } elseif($uid == -1) { echo '用户不存在,或者被删除'; } elseif($uid == -2) { echo '密码错误'; } else { echo '未定义'; }
uc_user_synlogin() を実行すると、この関数は、同期ログイン uc 自体を有効にする他のすべての関数への同期ログインを表します。バックグラウンドで同期ログインを有効にするすべてのアプリケーションをループし、これと同様の
<script type="text/javascript" src="http://rayibeauty.ck101.com/api/uc.php?time=1408327309&code=bc6bFLa6WH343nin2GAn%2F82Y9cnCennPk1gcLGYHdQF4wsXsOSdTyqBb2Nuoxe0UJqzWMWncdx%2FfQ1GK6FS%2BqJqi2AxVG2Oq1pD9c1wZy%2BgjXs7qo4mm2sxFVHwW7JnjKGPDkVdDqtYeybkSISz7yrdb0ZFuXH2yr3Cq" reload="1"></script> <script type="text/javascript" src="http://kibeauty.ibeauty.tw/api/uc.php?time=1408327309&code=206flCqeb%2Faft%2FDFPno9Bvqsb1b0o6XTZdIByOoD7EC11vMrjzC7PaKLo0LF3tGiHwlwZkwdW5VDHq866MGulsco5nekfkL341VWp7BPabnZPNtgG7m4jZpfdx6nVP0LTJLYI%2BkebI7uLm58atk8Ex4sKBj%2FfDkjH%2F8z" reload="1"></script>
js コードをページに出力します。このコードは、同期ログインを有効にする各アプリケーション、さらに同期ログインを有効にする各アプリケーションに送信されます。 uc.php ファイルは受信後に復号されます。uc.php コールバック ファイルのコードは、独自の形式で記述する必要はありません。コード。
実際、UC の原理は非常に単純です。つまり、アプリケーションはログイン後、バックグラウンドで同期的にログインしているアプリケーションに送信されたコールバック ファイルをポーリングし、コールバック ファイルがユーザー ID を受信した後、それをポーリングします。 Cookie またはセッションを生成し、ログイン モードに入ります。
ucenter メンバーの同期ログイン通信原理のより簡単な分析と関連記事については、PHP 中国語 Web サイトに注目してください。