【发布时间】:2012-11-26 06:21:04
【问题描述】:
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 尝试过的一些事情:
- 用相同的名称和 sessionid 设置我自己的 cookie 不起作用,因为 cookie 被 PHP 处理中进一步设置的一个 PMA 覆盖。
- 更改 $_SERVER['PHP_SELF'] 的值(用于确定路径的值之一)不起作用,不知道为什么。
- 我尝试扩展 PMA_Config 类,尤其是 getCookiePath() 方法,但没有成功,因为我不知道如何实例化它,因此它覆盖了 PMA_Config 的方法。
【问题讨论】:
-
我认为
runkit有点过头了。如果它不提供您正在寻找的配置选项,您为什么不直接破解字符串的来源,然后只需修补应用程序以满足您的需求?将其添加为配置选项,然后使用您的补丁提交功能请求。 -
另外,您似乎正在寻找 PMA 支持的 SingleSignOn。在文档中查看现有选项是什么:wiki.phpmyadmin.net/pma/Auth_types
-
哇,没想到人们会这么快做出回应。我实际上已经在设置 SSO =o)
-
@hakre 让 SSO 工作,我花了一周的时间试图弄清楚如何解决这个问题,而我所需要的只是使用不同的 authtype。既然您确实提供了正确的解决方案,您是否想将其作为答案并说明如何设置?
-
我有一个更好的建议:回答你自己的问题。这是完全正确的,我敢打赌,你可以写出比我能写的更好的答案。我只是给出一些指示,仅此而已;)。是的,这个网站完全接受您回答自己的问题。很高兴看到你现在解决了;)
标签: php session cookies phpmyadmin