用戶模塊 /modules/member/index.php function logout()javascript
首先PHPCMS的登出的代碼裏面有一句同步登出的語句:php
$synlogoutstr = $this->client->ps_member_synlogout();
這個同步登出的代碼是這樣的: modules/member/classes/client.class.php 大概第67行java
/** * 同步退出 * @param string $uid * @return string javascript用戶同步退出js */ public function ps_member_synlogout() { return $this->_ps_send('synlogout', array()); }
注意這裏_ps_send的第二個參數是一個空的數組數組
再看到phpsso_server中phpsso類的構造函數: phpsso_server/phpcms/modules/phpsso/classes/phpsso.class.php 大概第32行app
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。因而調用同步退出就在這裏終止。函數
問題的解決辦法: ui
知道了緣由要想解決就很容易了,主要有兩種。保險一點的方法是到ps_member_synlogout裏面給那個空的數組隨便增長一個元素。第二種就是去掉empty($this->data)這個判斷。this