2012-12-08 108 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();