CommerCentr
EN
Sign in

Безопасный режим админки (safe mode)

#1
Устанавливаем модификатор , обновляем - белый экран
Беги на фтп смотри, что за беда, чистит кеш модификаторв, а там.. нет доступа выше корня..

Да? 100% беда

function modification($filename) {

if (isset($_GET['safe_mode'])) return $filename;

if (defined('DIR_CATALOG')) {
$file = DIR_MODIFICATION . 'admin/' . substr($filename, strlen(DIR_APPLICATION));
} elseif (defined('DIR_OPENCART')) {
$file = DIR_MODIFICATION . 'install/' . substr($filename, strlen(DIR_APPLICATION));
} else {
$file = DIR_MODIFICATION . 'catalog/' . substr($filename, strlen(DIR_APPLICATION));
}

if (substr($filename, 0, strlen(DIR_SYSTEM)) == DIR_SYSTEM) {
$file = DIR_MODIFICATION . 'system/' . substr($filename, strlen(DIR_SYSTEM));
}

if (is_file($file)) {
return $file;
}

return $filename;
}


site/admin/index.php?user_token=XXXXXXXXXXXXXXXXXX&safe_mode=1
#2
меня уже смутила строка с $_GET, дальше логика в чем ? каким образом добавление safe_mode=1 происходит ?
#3
ALarikкаким образом добавление safe_mode=1 происходит ?

ручками
#4
ALarikменя уже смутила строка с $_GET,

массив $_GET не так страшен, как его малюют, но на данном этапе он доступен

$_SERVER тебя ничем не смущает?

Дело в том, что только после инициализации, а грузится он через modifcation

$this->get = $this->clean($_GET); -
#5
и.. заметь, что я проверяю только наличие get параметра, а не его значение
#6
не проще ли:
if (!is_writable($filename)) return $filename;

и просто и лакончино и эффективно.
#7
нет!

modifiacation часть ядра
и подключается всегда, и берет файл из "кеша" модифицированных файлов

например
require_once(modification(DIR_SYSTEM . 'engine/action.php'));

и друго пути обойти подключение - нет

Anyone can read. To post and vote, sign in.