ホームページ > 記事 > CMS チュートリアル > phpcms phpsso が同期的に終了できない場合はどうすればよいですか?
phpcms が同期的に終了できない場合はどうすればよいですか? phpcmsv9 phpsso は同期的に終了できませんか?
phpcmsv9 には、マルチサイト同期ログイン用の phpsso_server が付属しており、ucenter も統合できます。コードをあまり変更しないように、現在でも ECSHOP と PHPCMS を統合するときにこの phpsso を使用しています。
ECSHOPは簡単な設定でucenterと通信できるのでとても便利です。この phpsso は、ucenter との通信に成功せずに長い間動作していました。数時間考えた結果、ついにコミュニケーションをとることに成功しました。
登録とログインはすべて同期できますが、phpcms でのログアウト時に ECSHOP が終了しない点、およびその逆の点が異なります。
問題の原因:
ホーム ページで、PHPCMS ログアウト コードの同期ログアウト ステートメントを確認しました:
$synlogoutstr = $this->client->ps_member_synlogout();
この同期ログアウト コードは次のようになります。
/** * 同步退出 * @param string $uid * @return string javascript用户同步退出js */ public function ps_member_synlogout() { return $this->_ps_send("synlogout', array()); }
ここでの _ps_send の 2 番目のパラメーターは空の配列であることに注意してください
phpsso_server の phpsso クラスのコンストラクターを見てください:
if(isset($_POST["data'])) { parse_str(sys_auth($_POST['data'], 'DECODE', $this->applist[$this->appid]['authkey']), $this->data); if(emptyempty($this->data) || !is_array($this->data)) { exit('0'); } } else { exit('0'); }
$this->data についての判断はここで行い、empty が true を返した場合は、そのまま 0 を返し、以下の同期終了コードは実行されません。上記の手順では、同期ログアウトを呼び出すときに渡されるデータ パラメーターが正確に array() であり、空の場合は当然 true が返されることがわかります。したがって、同期出口への呼び出しはここで終了します。
問題の解決策:
原因がわかれば解決は簡単ですが、大きく分けて 2 つのタイプがあります。
より安全な方法は、ps_member_synlogout の空の配列に要素を追加することです。
2 つ目は、empty($this->data)
判定を削除することです。
PHP 中国語 Web サイト、多数の無料 PHPCMS チュートリアル 、オンライン学習へようこそ!
以上がphpcms phpsso が同期的に終了できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。