data)"인 부분을 삭제합니다."/> data)"인 부분을 삭제합니다.">
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의 두 번째 매개 변수는 빈 배열입니다. 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를 반환하는 것을 볼 수 있습니다. 따라서 동기 종료에 대한 호출은 여기서 종료됩니다.
문제 해결 방법:
이유를 알고 나면 쉽게 해결할 수 있는 두 가지 유형이 있습니다. 더 안전한 방법은 ps_member_synlogout의 빈 배열에 요소를 추가하는 것입니다. 두 번째는 판단을 없애는 것입니다. empty($this->data)
PHPCMS 튜토리얼 , 온라인 학습을 환영합니다!
위 내용은 phpcms phpsso가 동기적으로 종료되지 않으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!