1

PhpMyAdminは、CookieパスをPMAがインストールされているパスに設定します。

  • したがって、/ pma /にインストールされている場合は Cookieパスが/pma/に設定されます。

ただし、他のシステムセッションと一緒にPMAからユーザーをログアウトできるようにするには、セッションにアクセスする必要があるログアウトコードがありますが、これは/にあります。

もちろん、ブラウザはCookieパスの外部でCookieにアクセスすることを許可しないため、これは機能しません。

php.iniの設定を上書きするCookieを設定するときに、PMAが独自のパスを指定するため、php.iniでデフォルトのCookieパスを設定することはできません。

構成オプションを設定するか、場合によってはPMAクラスを拡張することにより、PMAによって設定されたデフォルトのCookieパスを/に変更する方法はありますか?runkitを使ったモンキーパッチと呼ばれるものについても読んだことがありますが、それはできますか?もしそうなら、どのように?

アップグレード間で変更を維持したいので、PMAコアファイルを編集することはできません。これをconfig.inc.phpにコーディングできる場合は、アップグレードの合間に固執します。

私がconfig.inc.phpを介して試したいくつかのこと:

  • 同じ名前とセッションIDで自分のCookieを設定しても、PHP処理でPMAが設定したものによってCookieが上書きされるため、機能しません。
  • パスの決定に使用される値の1つである$_SERVER['PHP_SELF']の値を変更しても、機能しません。理由はわかりません。
  • PMA_Configクラス、特にgetCookiePath()メソッドを拡張しようとしましたが、インスタンス化する方法がわからないため機能しなかったため、PMA_Configのメソッドをオーバーライドします。
4

1 に答える 1

0

PMAにSignonauthtypeを使用することになりました

その後、私の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';

これで、メインシステムによって設定されたSID Cookieを使用するため、PMACookieにアクセスする必要がなくなりました。メインシステムとPMAからログアウトするには、通常のCookieログアウトを実行します。

$_SESSION = array();
setcookie(session_name(), '', time() - 3600);
session_destroy();
于 2012-12-19T21:48:49.807 に答える