2016-10-10 110 views
1

我知道已經有一個與此相同的問題(How do I pass session to ckfinder in codeigniter 3?),但它根本沒有幫助。只有1個答案,它不適合我,並提供了很少的解釋。如何使用CodeIgniter 3.x將會話數據傳遞給CKFinder?

我有一個CI站點,用戶可以在其中使用CKEditor登錄和編輯一些內容。我也安裝了CKFinder,但我無法將任何會話數據傳遞到CKFinder配置文件以驗證登錄的安全性。全局變量$_SESSION僅返回Array() 1並且不包含任何會話數據(是的,我正在使用session_start();)。

使用另一篇文章的答案作爲基礎,我嘗試從$_COOKIE檢索數據,但似乎沒有什麼特別有用。 Cookie數據中沒有ci_session。最接近的是PHPSESSID,但我從中得不到任何有用的東西。

任何幫助將不勝感激。我已經花了很長時間在這個項目上了。謝謝!

+0

你能澄清一下你有什麼問題嗎?訪問會話數據?設置Cookie數據?將數據傳遞給視圖?在js中使用數據? – PaulD

+0

CKfinder在一個新窗口中打開,該窗口的源代碼是'assets/ckfinder/ckfinder.html'的直接URL,因此在技術上屬於CI框架之外。它由同一目錄中的一個'config.php'文件初始化。 'config.php'文件具有用於保護CKfinder的認證功能,它沒有看到在CI框架內創建的任何會話數據(例如加載具有打開CKfinder的編輯器的視圖的控制器)。我需要將會話數據傳遞給'config.php'文件。 – vertigoelectric

回答

2

您不應該通過寫入每個用戶來更改配置文件。由於這是一個商業應用程序,我無法查看它的文檔,但這可能有幫助。

  1. 設置用戶頁面CKfinder上的鏈接只有當用戶登錄顯示。
  2. 設置控制器CKfinder鏈接到CI內檢測用戶是否登錄或不併允許(即認證和授權),否則拒絕該請求。
  3. 或者爲CKfinder創建一個CI庫,從CI中運行它。

很清楚CKeditor很好,我相信CKfinder將被很好地記錄下來,可以很容易地與框架和現有系統集成。 CKeditor是一個漂亮的腳本(雖然有限制),所以我會認爲相同的質量適用於CKfinder。

是的,CI會話數據在CI之外不可用。像這樣的第三方應用程序可以使用CI框架中的標準包括直接或與庫等集成到CI中。事實上CI的一個重要特性就是編寫小型庫的能力,它可以很容易地包含幾乎所有第三方應用程序,並且相對易於實現。

此鏈接將幫助: Codeigniter 3 - Access Session from Outside Codeigniter Installation

如果沒有進一步的代碼示例或問題的更準確的例子,我真的不知道我怎樣才能幫助不止於此。我希望它可能有一些幫助,但它可能不是。抱歉。

+0

不幸的是你的3個解決方案都不適合我。有沒有辦法使用原生的PHP會話或在CI框架內外都可以使用的東西? – vertigoelectric

+0

當然,CI不會阻止你使用任何你想要的東西。然而,爲此只重新工作整個會話庫似乎並不正確。 CI使用php $ _SESSION超級全局,因此您可以隨時進行查詢。 – PaulD

+0

「詢問」是什麼意思?當我嘗試使用$ _SESSION時,CKfinder仍然沒有看到任何東西。 – vertigoelectric

相關問題