2012-12-08 66 views
1

phpMyAdmin的所以设置Cookie路径到PMA安装路径。更改phpMyAdmin的Cookie路径

不过,我已经注销其需要访问会话,以便能够与其他系统的会话一起注销用户PMA的代码,但它位于/

这当然不起作用,因为浏览器不允许在cookie路径之外访问cookie。

在php.ini中设置默认cookie路径不起作用,因为PMA在设置将覆盖php.ini设置的cookie时指定了自己的路径。

有没有办法通过设置配置选项或可能扩展PMA类来将PMA设置的默认cookie路径更改为/?我也读过关于使用runkit的一个叫做猴子修补的东西,它可以这样做吗?如果是这样如何?

编辑PMA核心文件不是一个选项,因为我希望在升级之间进行更改。如果这可以编码到config.inc.php,它会坚持升级。

有些事情我已经通过的config.inc.php尝试:

  • 设定自己具有相同名称和会话ID的Cookie,如饼干是由一个PMA进一步设置在PHP处理覆盖不起作用。
  • 更改$ _SERVER ['PHP_SELF'](这是用于确定路径的值之一)的值不起作用,不确定原因。
  • 我试图扩展PMA_Config类,尤其是getCookiePath()方法,因为我不知道如何实例化它,所以它覆盖了PMA_Config的方法,因此无法正常工作。
+0

我会认为'runkit'稍微超过了顶端。为什么不只是破解字符串来源的地方,所以只需修补应用程序以满足您的需求,如果它没有提供您正在寻找的配置选项?将它作为配置选项添加,然后用您的修补程序提交功能请求。 – hakre

+0

此外,它看起来像你正在寻找由PMA支持的SingleSignOn。在文档中查看现有选项是什么:http://wiki.phpmyadmin。net/pma/Auth_types – hakre

+0

whoa,没想到人们会很快回应。我实际上已经在建立SSO = o) –

回答

0

我结束了使用Signon authtype的PMA

我的PMA的配置则成了:

$cfg['Servers'][$i]['auth_type']  = 'signon'; 
$cfg['Servers'][$i]['SignonSession'] = 'YOUR_SESSION_ID'; // You can use ini_get('session_name') if you prefer 
$cfg['Servers'][$i]['SignonURL']  = 'FULL_URL'; // URL it will redirect unauthenticated users 
$cfg['Servers'][$i]['LogoutURL']  = 'FULL_URL'; // URL where user will be redirected after logout 

在我的SSO剧本,我登录到系统的其余部分,因此在添加这些行将同时登录到PMA。

$_SESSION['PMA_single_signon_user'] = 'MY_PMA_USERNAME'; 
$_SESSION['PMA_single_signon_password'] = 'MY_PMA_PASSWORD'; 

现在我不需要访问PMA cookie,因为它使用主系统设置的SID cookie。要注销主系统和PMA,我做一个常规的cookie注销:

$_SESSION = array(); 
setcookie(session_name(), '', time() - 3600); 
session_destroy();