mrprometei

Не работает Капча

Рекомендуемые сообщения

mrprometei    1

Есть проблема с капчей opencart 1.5.5.1.2.

Добрые люди подсказали что скорее всего проблема с каким то модулем или с кодировкой в каком то файле модуля.

Так как сайтом рулили несколько людей до меня то круг поиска увеличивается до всего сайта.

Отключал модули поочередно эффекта не принесло.

Пробовал найти файлы с BOM рекрусивно тоже эффекта не принесло.

 

пример проблемы

http://jigfish.ru/aksessuary/attraktanty/attraktant-marker-zapah-krovi.html

когда хочешь оставить отзыв.

 

еще пример

http://jigfish.ru/reviews

 

 

Нашел костыль на сайте 

 

$out = ob_get_contents();

$out = str_replace(array("\n", "\r", "\t", " "), "", $input);
ob_end_clean();

 

Попробовал с первым примером проблема пропадает со вторым нет.

Так как не люблю костыли хочу попробовать разобраться с проблемой в корне.

 

В связи с этим хотел узнать как можно найти файл с неправильной кодировкой применительно ко всему сайту?

Есть ли возможность или какие то инструменты для локализации проблемы еще?

 

Буду очень признателен за советы или наставления в этом направлении.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    921

поискать

 

bomdel

delbom

bom_del

del_bom

 

Кроме того возможны варианты

Когда есть пустая строка или пробел

Изменено пользователем chukcha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 476

поискать

 

bomdel

delbom

bom_del

del_bom

 

Кроме того возможны варианты

Когда есть пустая строка или пробел

Та да - часто редактируют файлы и забывают про непечатные символы, забывают переводы кареток пробелы

Потом найти очень тяжело.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mrprometei    1

Та да - часто редактируют файлы и забывают про непечатные символы, забывают переводы кареток пробелы

Потом найти очень тяжело.

 

 

Да в этом то и парадокс. 

Так как не я один вел сайт и связи с предшественниками нет.

Под подозрение попадает любой файл.

Можно ли как то еще попробовать вычислить пакостника?

Ибо проверять каждый файл это смертиподобно =))) а очень не хочется городить костыль на костыле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mrprometei    1

поискать

 

bomdel

delbom

bom_del

del_bom

 

Кроме того возможны варианты

Когда есть пустая строка или пробел

Спасибо. За совет попробую этими прогнать может что-то найду. Только есть у меня большое подозрение что правились файлы предшественниками. =( 

А есть ли варианты поиска пустых строк или пробелов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    921

вот простейший код

 

<?php
function searchFile($path, $pattern = '*', $flags = 0, $depth = 0) {
    //Ищем все файлы с расширением php и помещаем их в массив $matches
    $matches = array();
    $folders = array(rtrim($path, DIRECTORY_SEPARATOR));

    while($folder = array_shift($folders)) {
        $matches = array_merge($matches, glob($folder.DIRECTORY_SEPARATOR.$pattern, $flags));
        if($depth != 0) {
            $moreFolders = glob($folder.DIRECTORY_SEPARATOR.'*', GLOB_ONLYDIR);
            $depth   = ($depth < -1) ? -1: $depth + count($moreFolders) - 2;
            $folders = array_merge($folders, $moreFolders);
        }
    }
    return $matches;
}
 
$f = searchFile(dirname(__FILE__), "*.{php,tpl}", GLOB_BRACE, 10000);

echo 'run';
foreach ($f as $key => $val) {
    $f = fopen($val,'rb');
	$filesize = filesize($val);
	if($filesize==0){
		continue;
	}
	$t = fread($f, $filesize);

	$fi = substr($t, 0, 2);
	if ($fi != '<?') echo $val. '<br>';
    //проверяем есть ли в файле BOM
    if (preg_match('|\xEF\xBB\xBF|', $t) !== 0) {
        if (is_writable($val) === true) {
            $data = preg_replace('|\xEF\xBB\xBF|', "", $t);
            $file = fopen($val,'w+b');
            if (fwrite($file, $data) === FALSE) {
                echo "$file :: Не могу произвести изменение\n";
            }
            echo "$val :: Успешно отредактирован\n";
            fclose($file);
        }
        else{
            echo $val." :: Присутствует метка BOM, файл доступен только для чтения\n";
        }
    }
	$pos = strpos('$GLOBAL',$t);
    if ($pos !==false) {
            echo "<br>$val :: G L O B A L <br>\n";
    }
}
echo 'stop';
?>


Если найдет - выведет название файла

+ простейшая проверка на наличие $GLOBAL

Изменено пользователем chukcha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 476

Да в этом то и парадокс. 

Так как не я один вел сайт и связи с предшественниками нет.

Под подозрение попадает любой файл.

Можно ли как то еще попробовать вычислить пакостника?

Ибо проверять каждый файл это смертиподобно =))) а очень не хочется городить костыль на костыле.

Попробуйте поиск в файлах на предмет

?>"пробел" или перевод каретки

Total commander ищет даже по регулярным выражениям и даже по FTP

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mrprometei    1

Спасибо большое за советы. И прошу прощения если вопросы сильно банальны =)

 

Подскажите еще пожалуйста когда в админке захожу в журнал ошибок вижу следующее

 

Fatal error: Allowed memory size of 201326592 bytes exhausted (tried to allocate 193664010 bytes) in ***/vqmod/vqcache/vq2-system_engine_controller.php on line 58

 

И не могу понять смысл ошибки ведь ресов хватает.тогда в чем проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 476

Удалите лог ошибок /system/log/* и очистите журнал модификаторов если у вас opencart 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mrprometei    1

Удалите лог ошибок /system/log/* и очистите журнал модификаторов если у вас opencart 2

 

 

У меня opencart 1.5.5.1.2.

Может с сталкивались с такой проблемой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 476

У меня opencart 1.5.5.1.2.

Может с сталкивались с такой проблемой?

Я написал

Удалите лог ошибок /system/log/*

 

 

А модификаторы для opencart 2

 

Значит в вашем случае

Удалите лог ошибок /system/log/*

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mrprometei    1

вот простейший код

 

<?php
function searchFile($path, $pattern = '*', $flags = 0, $depth = 0) {
    //Ищем все файлы с расширением php и помещаем их в массив $matches
    $matches = array();
    $folders = array(rtrim($path, DIRECTORY_SEPARATOR));

    while($folder = array_shift($folders)) {
        $matches = array_merge($matches, glob($folder.DIRECTORY_SEPARATOR.$pattern, $flags));
        if($depth != 0) {
            $moreFolders = glob($folder.DIRECTORY_SEPARATOR.'*', GLOB_ONLYDIR);
            $depth   = ($depth < -1) ? -1: $depth + count($moreFolders) - 2;
            $folders = array_merge($folders, $moreFolders);
        }
    }
    return $matches;
}
 
$f = searchFile(dirname(__FILE__), "*.{php,tpl}", GLOB_BRACE, 10000);

echo 'run';
foreach ($f as $key => $val) {
    $f = fopen($val,'rb');
	$filesize = filesize($val);
	if($filesize==0){
		continue;
	}
	$t = fread($f, $filesize);

	$fi = substr($t, 0, 2);
	if ($fi != '<?') echo $val. '<br>';
    //проверяем есть ли в файле BOM
    if (preg_match('|\xEF\xBB\xBF|', $t) !== 0) {
        if (is_writable($val) === true) {
            $data = preg_replace('|\xEF\xBB\xBF|', "", $t);
            $file = fopen($val,'w+b');
            if (fwrite($file, $data) === FALSE) {
                echo "$file :: Не могу произвести изменение\n";
            }
            echo "$val :: Успешно отредактирован\n";
            fclose($file);
        }
        else{
            echo $val." :: Присутствует метка BOM, файл доступен только для чтения\n";
        }
    }
	$pos = strpos('$GLOBAL',$t);
    if ($pos !==false) {
            echo "<br>$val :: G L O B A L <br>\n";
    }
}
echo 'stop';
?>


Если найдет - выведет название файла

+ простейшая проверка на наличие $GLOBAL

 

 

нашел очень большую кучу файлов.

но появились еще вопросы 

очень много файлов в дефолтовой теме

допустим

/catalog/view/theme/default/template/agootemplates/module/search.tpl

получается изначально там были пробелы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mrprometei    1

Я написал

 

А модификаторы для opencart 2

 

Значит в вашем случае

Удалите лог ошибок /system/log/*

 

Касаемо логов все помогло. Спасибо.

 

Касаемо поиска пробелов после ?> рекрусивно грепнул весь каталог и ужаснулся итогом.

очень много файлов в дефолтовой теме.

Можете подсказать Такое возможно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    921

в шаблонах - не страшно!

 

 

Кстати, да...

 

еще возможен вариант, наличие пробелов и пустых строк после ?> в php файлах

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
mrprometei    1

Парни подскажите пожалуйста!

Поправил все что показал код рекомендованный выше. ВСе файлы php, но проблема так и не пропала.

Есть ли еще какие то варианты поиска источника проблемы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    921

Значит не все...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу