data)"."/> data)".">

Home  >  Article  >  CMS Tutorial  >  What should I do if phpcms phpsso cannot exit synchronously?

What should I do if phpcms phpsso cannot exit synchronously?

藏色散人
藏色散人Original
2020-02-04 10:49:512153browse

What should I do if phpcms phpsso cannot exit synchronously?

What should I do if phpcms cannot exit synchronously? phpcmsv9 phpsso cannot exit synchronously?

phpcmsv9 comes with a phpsso_server for multi-site synchronous login, and can also integrate ucenter. In order not to change too much code, I still used this phpsso when integrating ECSHOP and PHPCMS today.

ECSHOP is very convenient. You can communicate with ucenter after simple configuration. This phpsso has been working for a long time without success in communicating with ucenter. After several hours of thinking, I finally succeeded in getting them to communicate.

Registration and login can all be synchronized, except that ECSHOP does not exit when logging out in phpcms, and vice versa.

Cause of the problem:

On the home page, I saw a synchronous logout statement in the PHPCMS logout code:

$synlogoutstr = $this->client->ps_member_synlogout();

This synchronization The logout code is like this

/** 
 * 同步退出 
 * @param string $uid 
 * @return string javascript用户同步退出js 
 */  
public function ps_member_synlogout() {  
    return $this->_ps_send("synlogout', array());  
}

Note that the second parameter of _ps_send here is an empty array

Look at the constructor of the phpsso class in phpsso_server:

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');  
}

There is a judgment here about $this->data. If empty returns true, it will directly return 0 and the following synchronous exit code will not be executed. In the above step, you can see that the data parameter passed in when calling synchronous logout is exactly array(), and empty will of course return true. So the call to synchronous exit terminates here.

Solution to the problem:

Once you know the cause, it is easy to solve it. There are two main types.

A safer way is to add an element to the empty array in ps_member_synlogout.

The second is to remove the empty($this->data) judgment.

PHP Chinese website, a large number of free PHPCMS tutorials, welcome to learn online!

The above is the detailed content of What should I do if phpcms phpsso cannot exit synchronously?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn