1. ユーザーは discuz にログインし、logging.php ファイルの uc_user_login 関数を通じて投稿されたデータを確認します。つまり、ユーザー名とパスワードを確認します。
2. 検証が成功すると、uc_client の下の client.php ファイルにある関数 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 を使用します)、関数 _setcookie で Cookie を設定します。 。
6. 各アプリケーションは、対応するキーを使用して上記の Cookie セットをデコードし、ユーザー ID およびその他のデータを取得します。この値を使用して、ユーザーが他のアプリケーションを通じてログインしたかどうかを判断し、ユーザーが自動的にログインできるようにします。
アプリケーションの Logging.php ------>client.php (uc_client の場合)----->Ucenter------>api/uc.php (他のアプリケーションの場合)
実際、同期ログインを実現するための Ucenter の原理は、アプリケーションがログインに成功すると、データを Ucenter に転送し、Ucenter が他のアプリケーションにも Cookie を設定するように通知します。これにより、ユーザーは Cookie を通じて自動的にログインできます。他のアプリケーションにアクセスするときに設定されたもの。
一般的な手順は次のとおりです: まず ucenter をインストールし、次に uc_client フォルダーを独自のプロジェクトにコピーし、次にいくつかのファイルを設定します
client.phpは関数ライブラリに相当します
uc.phpはコールバックファイルに相当します
config.phpは設定ファイルです
同期ログインを設定したアプリケーションが2つある場合、一方のアプリケーションにログインして実行した場合
「./config.inc.php」を含める;
'./uc_client/client.php' を含めます;
$usernames="kyee";
$passwords="123456";
list($uid, $username, $password, $email) = uc_user_login($usernames, $passwords);
if($uid > 0) {
setcookie("ユーザー名",$ユーザー名,time()+intval(24*3600));
echo uc_user_synlogin($uid);
echo 'ログイン成功';
elseif($uid == -1) {
echo 'ユーザーが存在しないか、削除されました';
elseif($uid == -2) {
echo 'パスワードが間違っています';
} その他 {
エコー「未定義」;
}
uc_user_synlogin() この関数は、同期ログインを有効にする他のすべての関数にログインを同期する必要があることを表します。uc 自体は、バックグラウンドで同期ログインを有効にするすべてのアプリケーションをループし、ページに出力します。
このようなJSコードが同期ログインを可能にする各アプリケーションに送信され、同期ログインを可能にする各アプリケーションのコールバックファイルuc.phpを受け取った後、実際に自分でコードを書くことができます。この uc.php コールバック ファイルは、その形式で記述する必要はありません。独自のコードを記述することもできます。
実際、UC の原理は非常に単純です。つまり、アプリケーションがログインした後、バックグラウンドで同期的にログインしたアプリケーションに送信されたコールバック ファイルをポーリングし、コールバック ファイルがユーザー ID を受け取った後、それを生成します。 Cookie またはセッションを取得し、ログイン モードに入ります。
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 in uc_client------>Ucenter------>アプリケーション内の api/uc.php
実際には同期ログインを実現するための Ucenter の原理は Cookie です。アプリケーションがログインに成功すると、データが Ucenter に転送され、Ucenter が他のアプリケーションにも Cookie を設定するように通知されます。これにより、ユーザーは設定された Cookie を使用して自動的にログインできます。他のアプリケーションにアクセスします。 Ucenter の同期原理を理解すると、同期ログインや UCenter を使用したインターフェイスの開発で問題が発生した場合に、作業がはるかに簡単になります。