带Codeigniter 3和PHP 7.3的CKFinder-带PHP会话的CheckAuthentication

时间:2019-06-04 16:15:39

标签: php codeigniter ckfinder

我正在升级某些较旧的Codeigniter 2.x网站以使用php 7.3和最新版本的Codeigniter(3.1.10),并且遇到了CKFinder身份验证错误,不再接受PHP本机会话过去一直有效。

以前有效:

$_SESSION['authorized'] = TRUE;

然后在CKFinder配置中

return isset($_SESSION['authorized']) && $_SESSION['authorized'];

但是,这可以再一次识别会话。我已经进行了一些研究,并找到了其他一些解决方案,这些方案涉及通过在CI的index.php中加载来在CKFinder配置中使用CI的会话库。例如

//test_session.php  (inside the root of CKFinders where config.php is stored)
ob_start();
define("REQUEST", "external");
$temp_system_path = $_SERVER["DOCUMENT_ROOT"].'/system';
$temp_application_folder = $_SERVER["DOCUMENT_ROOT"].'/application';
include($_SERVER["DOCUMENT_ROOT"].'/index.php');
ob_end_clean();
$CI =& get_instance();

if($CI->session->userdata('authorized') === TRUE) {
  return true;
}

此代码在test_sesion.php文件中可以单独工作,尽管我觉得这有点过头了,因为我还必须对index.php进行更改以检查这些临时路径,并更新默认控制器忽略外部请求。问题是,当我尝试在CKFinder配置中实现它时,会引发很多PHP错误-特别是在我将HVMC与Codeigniter结合使用时。

我发现了一个非常相似的问题,但是提供的解决方案不起作用,并且英语非常糟糕

Call to a member function item() on null MX/Modules.php Line Number: 8 ckeditor and kcfinder

我想知道是否有人曾经遇到过这个问题,或者知道一种绕过它的方法,只是像过去一样使用本机php会话。

1 个答案:

答案 0 :(得分:0)

最终我通过升级到最新版本的CKEditor和CKFinder解决了这个问题,它可能比我以前使用的以前版本对PHP 7.3的支持更好。

好像在带有CI 2.X的PHP 5.X和早期版本的CKFinder上,只需使用$ _SESSION变量就可以了,但是在带有PHP 7.X的CI 3.X的较新版本中,这种更复杂的解决方案必填。

如果像我一样通过wiredesignz使用HMVC,那么我引用的另一个问题将很有帮助,因为它可以解决尝试实现此问题时的另一个错误。