Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
phpmyadmin sso不会在注销时删除现有会话_Php_Session_Yii_Phpmyadmin_Single Sign On - Fatal编程技术网

phpmyadmin sso不会在注销时删除现有会话

phpmyadmin sso不会在注销时删除现有会话,php,session,yii,phpmyadmin,single-sign-on,Php,Session,Yii,Phpmyadmin,Single Sign On,我正在尝试在我的自定义应用程序中使用PHPMyAdmin SSO,该应用程序是在Yii框架中创建的。按照phpMyAdmin指南,我在config.inc.php中做了必要的更改 $cfg['Servers'][$i]['auth_type'] = 'signon'; $cfg['Servers'][$i]['SignonSession'] = 'MYSESSID'; $cfg['Servers'][$i]['SignonURL'] = 'http://myapp.com/site/login'

我正在尝试在我的自定义应用程序中使用PHPMyAdmin SSO,该应用程序是在Yii框架中创建的。按照phpMyAdmin指南,我在config.inc.php中做了必要的更改

$cfg['Servers'][$i]['auth_type'] = 'signon';
$cfg['Servers'][$i]['SignonSession'] = 'MYSESSID';
$cfg['Servers'][$i]['SignonURL'] = 'http://myapp.com/site/login';
$cfg['Servers'][$i]['LogoutURL'] = 'http://myapp.com/site/logout';
PHPMyAdmin链接到我的应用程序,当有人登录时,我使用用户名和密码值设置PMA_single_signon_用户和PMA_single_signon_密码。在注销操作中,我销毁会话Yii::app->session->destroy等价于会话_unset;会话(u)销毁

当用户成功登录到应用程序时,他可以单击phpmyadmin链接,他将成功重定向到phpmyadmin界面

当用户登录应用程序时,不会关闭浏览器并再次登录,即使用户已成功登录,我的phpmyadmin链接仍将重定向到登录签名URL

在phpmyadmin/libraries/plugins/auth/AuthenticationSignon.class.php中使用firebug和一些var_转储,我注意到在注销后,phpmyadmin仍然在path/phpmyadmin/下使用一个MYSESSID,它具有上一个会话的值

例如,我登录到myapp.com/site/login,得到

MYSESSID="value1" path=/ 
我成功地点击了myapp.com/phpmyadmin/链接。现在我在br中有两个MYSESSID

MYSESSID="value1" path=/ 
MYSESSID="value1" path=/phpmyadmin/
我注销时未关闭浏览器窗口并再次登录,在MYSESSID中获得一个新值,如:

MYSESSID="value2" path=/ 
我单击myapp.com/phpmyadmin/link,在重定向到SingoUrl之前退出,并查看以下会话:

MYSESSID="value2" path=/ 
MYSESSID="value1" path=/phpmyadmin/
从AuthenticationSignon.class.php我了解到,由于phpmyadmin在MYSESSID=value1内搜索,因此无法找到所需的PMA\u single\u signon\u用户和PMA\u single\u signon\u密码 因为我把它们放在MYSESSID=value2下

我所理解的底线是,当我在注销期间销毁会话时,在path=/phpmyadmin/下定义的会话不会被删除

有人知道如何正确注销或删除path=/phpmyadmin/下的会话吗

当我关闭浏览器窗口时,路径/和/phpmyadmin/的MysESSID=value1被完全删除,因此重新登录工作正常


注意:我只使用myapp.com,根本不使用www.myapp.com

解决方案是显式设置会话cookie,其中包含过去的时间,因此已经过期

setcookie("WPCPSESSID", $_COOKIE["MYSESSID"],time()-100, '/phpmyadmin/'); 
这样,phpmyadmin会话将在不关闭窗口的情况下过期


会议似乎没有结束;会话(u)销毁;;仅删除/path下的会话cookie,而不是子页面中的会话cookie,例如/phpmyadmin/

我还无法发布答案,因此我将其写在注释中。似乎删除/phpmyadmin/path下的会话的方法是执行一个setcookieWPCPSESSID,$\u COOKIE[MYSESSID],time-100,“/phpmyadmin/”;在注销操作中,实际创建一个具有过期时间的新cookie。这样,会话将在不关闭窗口的情况下过期。会议未结束;会话(u)销毁;;仅删除/path下的cookies。