### [phpcms phpsso不能同步退出怎么办](https://www.prosaas.cn/article/6292) **Published:** 2020-02-04T02:49:51 **Author:** 5201314 **Excerpt:** phpcms不能同步退出怎么办?phpcmsv9 phpsso无法同步退出 ? phpcmsv9自带了一个ph… **![](//zhiqipro.oss-cn-beijing.aliyuncs.com/2023/12/20231212124901271.jpg)** **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不会再执行下面的同步退出代码了。而上面一步可以看到调用同步登出时传入的data参数恰恰就是array(),empty当然会返回true。于是调用同步退出就在这里终止。 **问题的解决办法:**  知道了原因要想解决就很容易了,主要有两种。 保险一点的方法是到ps\_member\_synlogout里面给那个空的数组随便增加一个元素。 第二种就是去掉`empty($this->data)`这个判断。 PHP中文网,大量的免费PHPCMS教程,欢迎在线学习! 以上就是phpcms phpsso不能同步退出怎么办的详细内容,更多请关注知企PROSAAS其它相关文章! **Categories:** PHPCMS ---