data)"인 부분을 삭제합니다."/> data)"인 부분을 삭제합니다.">

>CMS 튜토리얼 >PHPCMS >phpcms phpsso가 동기적으로 종료되지 않으면 어떻게 해야 합니까?

phpcms phpsso가 동기적으로 종료되지 않으면 어떻게 해야 합니까?

藏色散人
藏色散人원래의
2020-02-04 10:49:512265검색

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의 두 번째 매개 변수는 빈 배열입니다.

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)

PHP 중국어 웹사이트, 다수의 무료

PHPCMS 튜토리얼 , 온라인 학습을 환영합니다!

위 내용은 phpcms phpsso가 동기적으로 종료되지 않으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.