Nastavení sessions pro KC Finder
- Andrasin
- Člen | 29
Zdravím, mám v Nette projektu integrovaný CKEditor a KCFinder. Pro povolení KCFinderu pro registrované uživatele vytvářím po přihlášení session s názvem KCFINDER.
Snažím se nastavit správné parametry v config.php kcfinderu, ale stále se nemůžu dostat ke zdárnému výsledku.
V config.php jsem nastavil
_sessionVar' => &$_SESSION['__NF']['DATA']['KCFINDER'],
//Dále mohu ještě nastavovat tyto parametry, ale nevím jak a ani nevím, jestli je to nutné.
'_sessionDir' => "/full/directory/path",
'_sessionDomain' => ".mysite.com",
'_sessionPath' => "/my/path",
Sessions mám v config.neon nastavené takto:
session:
expiration: 30 days
savePath: %tempDir%/sessions
Když si session dumpnu, tak existuje, ale KCFinder ji stále nevidí,
vyhazuje hlášku, že uživatel není oprávněn. Jinak Finder normálně
funguje, pokud mu v configu nastavím, aby session nepožadoval.
Využívám klasickou strukturu ze Sandboxu.
Poradí prosím někdo, jak to mám nastavit správně?
Editoval Andrasin (29. 9. 2016 22:13)
- iguana007
- Člen | 970
To nastavení by mělo odpovídat tomu, jak nastavuješ sessions v Nette, tak si to porovnej a postupuj podle tohoto návodu: http://kcfinder.sunhater.com/integrate#…
- Andrasin
- Člen | 29
To už jsem všechno pročítal a zkoušel. Pokud jsem to tedy pochopil správně, musím nastavit _sessionVar a _sessionDir, jelikož jsem cestu k session v config.neon změnil. Mám tedy nastaveno:
'_sessionVar' => &$_SESSION['__NF']['DATA']['KCFINDER'],
'_sessionLifetime' => 30,
'_sessionDir' => __DIR__ . '/../../../../temp/sessions',
sessionDir cesta je správně
file_exists(__DIR__ . '/../../../../temp/sessions/sess_0n9s94ks0gn0j9o2ekolkmsrc0
vrací TRUE. KCFINDER ale stále stávkuje. Zkoušel jsem cestu zadávat relativně i absolutně…
Zkoušel jsem to i takto:
ini_set('session.save_path', "C:\Users\andrasin\Dropbox\htdocs\gfcms-mini/temp/sessions");
var_dump(session_save_path());exit; //vrací existující cestu k sessions...
Editoval Andrasin (30. 9. 2016 17:43)
- Landsman
- Člen | 152
Mám pocit, že jsem s tím také bojoval a pak jsem šáhl po elFinder, který jsem dal na vlastní routu a ošetřil login. Integrace do CKeditoru byla rychlá, přidal jsem jen javascript na přenášení img path do formuláře. Třeba to pro tebe bude také rychlejší volba.
Editoval Landsman (2. 10. 2016 18:49)
- Andrasin
- Člen | 29
Díky za tip, mrknu na to. Buď použiju ten od tebe nebo nějaký jiný, Resnponsive Filemanager vypadá taky pěkně.
Ještě jsem trochu experimentoval a zdá se, že je problém v té verzi KCFinder, kterou jsem použil (3.12). Zkusil jsem verzi 2, která mi úspěšně funguje v jiném projektu s Nette 2.0 a tu jsem rozchodil bez problému.
- duke
- Člen | 650
Myslím, že problém je v tom, že KCFinder nepodporuje zápis:
'_sessionVar' => &$_SESSION['__NF']['DATA']['KCFINDER'],
Pro přidání této podpory je třeba zasáhnout do kódu skriptu
kcfinder/core/class/uploader.php
.
Konrkétně přepsat část označenou komentářem
// LOAD SESSION CONFIGURATION IF EXISTS
takto:
// LOAD SESSION CONFIGURATION IF EXISTS
$this->config = $_CONFIG;
$sessVar = "_sessionVar";
if (isset($_CONFIG[$sessVar])) {
$sessVar = $_CONFIG[$sessVar];
$session = &$_SESSION;
foreach ((array) $sessVar as $key) {
if (!isset($session[$key]))
$session[$key] = array();
$session = &$session[$key];
}
foreach ($session as $key => $val) {
if ((substr($key, 0, 1) != "_") && isset($_CONFIG[$key]))
$this->config[$key] = $val;
};
if (!isset($session['self']))
$session['self'] = array();
$this->session = &$session['self'];
} else
$this->session = &$_SESSION;
A v configu KCFinderu pak použít:
'_sessionVar' => array('__NF', 'DATA', 'KCFINDER'),