javascript — соединитель elFinder.php — & gt; путь в Internet Explorer

Я устанавливаю путь динамически в соединитель.php, и он работает как следует во всех браузерах, кроме Internet Explorer. Вот мой код connector.php:

function access($attr, $path, $data, $volume) {
return strpos(basename($path), '.') === 0       // if file/folder begins with '.' (dot)
? !($attr == 'read' || $attr == 'write')    // set read+write to false, other (locked+hidden) set to true
:  null;                                    // else elFinder decide it itself
}// Documentation for connector options:
// https://github.com/Studio-42/elFinder/wiki/Connector-configuration-options
$opts = array(
'debug' => true,
'roots' => array(
array(
'driver'        => 'LocalFileSystem',
'path'          => '../../pages/path/to/files/'.($_GET['mypath']).'/',
'URL'           => '../../pages/path/to/files/'.($_GET['mypath']).'/',
'uploadDeny'    => array('all'),
'uploadAllow'   => array('image', 'text/plain'),
'uploadOrder'   => array('deny', 'allow'),
'accessControl' => 'access'

)
)
);

// run elFinder
$connector = new elFinderConnector(new elFinder($opts));
$connector->run();

В основном происходит то, что если вы используете какой-либо браузер (кроме IE), ваш корневой каталог правильно установлен на $_GET['mypath'], но если вы находитесь в IE, то корневой каталог установлен на /files/ (каталог только на один уровень выше необходимого), и в результате пользователь может видеть папки, к которым он не должен иметь доступ.

Есть идеи, почему это происходит?

Постскриптум Единственная теория, которая у меня есть, это то, что, возможно, IE JavaScript Engine отправляет некорректно mypath переменная?

Код elFinder ниже:

<script type="text/javascript" charset="utf-8">
$().ready(function() {
var elf = $('#elfinder').elfinder({
// lang: 'ru',
url : 'libraries/elFinder/connector.php',
rememberLastDir : false,
useBrowserHistory : false,
customData : {mypath : <?php echo json_encode($_GET['CIF']); ?>}
}).elfinder('instance');
});
</script>

И фактический источник страницы выглядит так:

<script type="text/javascript" charset="utf-8">
$().ready(function() {
var elf = $('#elfinder').elfinder({
// lang: 'ru',
url : 'libraries/elFinder/connector.php',
rememberLastDir : false,
useBrowserHistory : false,
customData : {mypath : "mypath_folder"}
}).elfinder('instance');
});
</script>

P.S.S> Я только что подтвердил, что IE не отправляет mypath переменная.

У кого-нибудь есть идеи?

ОБНОВЛЕНИЕ: 09/02/16

Сегодня после дальнейшего расследования я обнаружил очень странное поведение этого сценария:

Если это любой браузер (кроме IE), то $_GET['mypath'] работает как надо, но в IE $_GET['mypath'] не установлен, НО, если это IE то $_POST['mypath'] устанавливается вместо $_GET['mypath']НО, во всех других браузерах $_POST['mypath'] не установлен.

Я хотел бы избежать проверки, если браузер семейства IE, то используйте $_POST и если что-то другое, то $_GET,

У кого-нибудь есть предложения?

ОТВЕТ:

$().ready(function() {
var elf = $('#elfinder').elfinder({
// lang: 'ru',
url : 'libraries/elFinder/connector.php',
requestType : 'post',
rememberLastDir : false,
useBrowserHistory : false,
customData : {mypath : <?php echo json_encode($_GET['CIF']); ?>}
}).elfinder('instance');
});

Если вы заставляете requestType в post тогда это всегда будет post во всех браузерах, так что вам не нужно беспокоиться о проверке, если браузер публикует или получает.

1

Решение

$().ready(function() {
var elf = $('#elfinder').elfinder({
// lang: 'ru',
url : 'libraries/elFinder/connector.php',
requestType : 'post',
rememberLastDir : false,
useBrowserHistory : false,
customData : {mypath : <?php echo json_encode($_GET['CIF']); ?>}
}).elfinder('instance');
});

Если вы заставляете requestType в post тогда это всегда будет post во всех браузерах, так что вам не нужно беспокоиться о проверке, если браузер публикует или получает.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]