LINUX.ORG.RU

не нужные \0\0 в заголовке

 


0

2

Есть не рабочая капча на php

выдаёт вот такое pp.vk.me/c629323/v629323837/199d1/S45WFfObeX4.jpg

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

на каком уровне они добавляются? у меня есть подозрение что php настроено так, чтобы вылавливались ошибки, но для такого типа ответа это не допустимо

а может быть вебсервер где то добавляет? собственно там по всему сайту везде \0\0 в тексте страниц

★★

Последнее исправление: Klymedy (всего исправлений: 3)

не нужные \0\0

Почему \0\0, когда там \n\n?

на каком уровне они добавляются?

Где-то после «?>» в конце файла стоят лишние переводы строки. Убери все финальные «?>» и больше никогда их не ставь :)

KRoN73 ★★★★★
()
Ответ на: комментарий от fMad

С битриксом не знаком, но вывод скорее всего буферизуется. Если есть возможность, то перед выводом капчи можно попробовать вызвать ob_clean.

Либо, как уже сказано, ищи закрывающиеся тэги ?> в файлах с кодом. Все символы после этих тэгов вываливаются в стандартный вывод, вероятность 90%, что в этом проблема.

nguseff
()

Хрен его знает - вот никогда не сталкивался. Если лицензия не истекал - в ТП - пусть ковыряются. За что заплачено?

Если истекла - копать начинай отсюда: /bitrix/modules/main/classes/general/captcha.php

Но для начала, для чистоты эксперемента, закомментируй в /bitrix/tools/captcha.php последнюю строку, т.е: require($_SERVER[«DOCUMENT_ROOT»].«/bitrix/modules/main/include/epilog_after.php»);

Мало ли - может у тебя где-то эвент на потобработку - я такое встречал - может и капчу запарывать в теории.

Есть подозрения что модифицировано ядро - так делать нельзя.

Suntechnic ★★★★★
()
Ответ на: комментарий от Suntechnic

спасибо

засунул код из файла bitrix/modules/main/include.php внутрь ob_start() ob_get_clean()

заголовки стало отдавать нормальные, Content-Type: image/jpeg но пустые строки остались

include.php вообще обфуксенный файл, как будто там вставки инородные

попробовал отключить капчу, в CaptchaCheckCode вставил заглушку, но выкинуть из формы пока так и не получилось, даже найти где эта форма находится не так то просто

как то бы увидеть стек вызовов и включёных файлов в заданном месте

fMad ★★
() автор топика
Ответ на: комментарий от kiotoze

мне вот честно говоря не понятна эта концепция с <? ?>

и идее эти маркеры нужны в шаблонах, чтобы отделять html от остального кода., а зачем они в php файлах и почему их не нужно закрывать не понятно, ну да ладно.

нужно как то отследить их включение в стек кода. поставил в коде throw, в надежде вы исключение покажет весь стек, в результате вижу только файл в котором запустил throw

fMad ★★
() автор топика
Ответ на: комментарий от Suntechnic

чтобы исключить этот файл сделал заглушки для COption::GetOptionString и COption::GetOptionString в modules/main/classes/general/captcha.php

но там ещё нужно где то брать коннектор к базе, в общем без bitrix/modules/main/include.php никуда

пролог закрывал, ничего не меняется

fMad ★★
() автор топика
Последнее исправление: fMad (всего исправлений: 1)
Ответ на: комментарий от fMad

Откуда PHP вырос, оттуда и родовые проблемы.

Deleted
()

Вероятнее всего, либо переводы строк после ?>, либо unicode bom в начале файлов вследствие редактирования текстовыми хипсторедакторами с виндой головного мозга.

svr4
()
Ответ на: комментарий от svr4

да это то всё понятно, не понятно что с этим делать

что-то бы там вызывать, чтобы увидеть такое же трейс как во фласке или хотя бы джанге.

за-то понятно, почему за модифицирование битрикс хорошо платят. адский труд

fMad ★★
() автор топика
Последнее исправление: fMad (всего исправлений: 1)
Ответ на: комментарий от fMad

увидеть трейс то можно или с помощью xdebug, вопрос только, что он даст) Все равно, где именно выводятся эти символы это не покажет. Можно пройтись регуляркой по php файлам на поиск ?>\n\n, \n\n<? или чего то подобного.

nguseff
()
Ответ на: комментарий от fMad

почему их не нужно закрывать не понятно

логичнее не закрывать в случае eof

anonymous
()
Ответ на: комментарий от fMad

include.php вообще обфуксенный файл

Это нормально. Там подключение ядра и всякого барахла. Старт сессии и защита битрикс. Никакого функционала там особо нет.

Suntechnic ★★★★★
()
Ответ на: комментарий от fMad

COption::GetOptionString - это считывание настроек просто

А include.php ты не пропустишь просто. Там ядро само подключается. Не бойся - его с ним все нормально.

Suntechnic ★★★★★
()
Последнее исправление: Suntechnic (всего исправлений: 1)
Ответ на: комментарий от Suntechnic

if(($_1770291471= getLocalPath(___1838685427(257), BX_PERSONAL_ROOT)) !== false) include_once($_SERVER[___1838685427(258)].$_1770291471);

fMad ★★
() автор топика
Ответ на: комментарий от fMad

Тут проблема в том что, у тебя как-то не правильно определены:
$_1770291471 - она пуста. Где-то выше она должна была определится чем-то вроде '/local/php_interface/s1/init.php'
И вот это возвращает что-то не то: ___1838685427(257)

Как я понимаю это место где должны подключаться init.php для отдельных сайтов.

А зайдика в настройки главного модуля - предполагаю что там указан путь к директории сайта, но не текущий, а от старого хостинга, с которого этот сайт недавно перенесли. Короч проверь этот момент на всякий случай.

Suntechnic ★★★★★
()
Ответ на: комментарий от fMad

Дело в том что этот параметр вообще не должен быть установлен. А тем более установлен неправильно.

Только не в настройках главного модуля, а в настройках сайта (я перепутал). Вот он: http://joxi.ru/EA4bngyfJWo0mb

Suntechnic ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.