2014-12-01 6 views
0

У меня есть смешанный сайт, на котором у нас есть ExpressionEngine CMS с магазином Magento. На нашем сайте EE у меня есть шаблон, где я вызываю плагин, чтобы получить информацию о корзине магазина. Мы используем аутентификацию Magento, поэтому зарегистрированный пользователь является пользователем Magento.PHP ob_gzhandler дополнительные символы

Мы хотим показать что-то вроде этого:

first

код в плагин подключается к Magento, получает пользователь LoggedIn, если они вошли в систему и устанавливает количество КОРЗИНА пунктов.

Это HTML, что плагин должен вернуться к шаблону:

<span class="carticon">(0)</span><a href="http://www.example.com/store/checkout/cart/">My Cart</a><span>Welcome, MB34!</span><a href="http://www.example.com/store/customer/account/logout/">Logout</a> 

Но, если включить Gzip на ExpressionEngine, я получаю исключение в ERR_CONTENT_DECODING_FAILED потому, что Magento не имеет встроенную в gZip. В настоящее время у нас нет mod_deflate, поэтому как EE сможет gZip? Это должно быть через ob_gzhandler.

Теперь, если я изменить мой плагин использовать ob_gzhandler как это:

ob_start("ob_gzhandler"); 
echo trim($result); 
ob_end_flush(); 

я получаю дополнительные символы в конце вывода:

second

Любые идеи, что является причиной этого и как это исправить?

Мы скоро включим mod_deflate; это исправить? Я имею в виду, что мне не придется использовать ob_gzhandler, верно?

+0

Вы можете увидеть, что персонажи на самом деле в конце $ результата и установить накладку() 's 'character_mask' параметр для обработки, что вы конкретно там найти ? – AllInOne

+0

Нет, это не покажет их. Что вы имеете в виду параметр 'character_mask', я вижу только« charlist », и он сообщает WHAT обрезать. – MB34

+0

Вот что показано: ' '' – MB34

ответ

0

При использовании ob_gzhandler важно, чтобы вы не смешивали контент с другими кодировками. Вызывая ob_end_flush(), вы можете заставить этот буфер прекратить работу до того, как вы действительно отправите контент. Простая пустая строка к концу файла может вызвать это. Я предлагаю вам пропустить ob_end_flush() и оставить буфер естественным, когда ваш PHP-скрипт завершается.

+0

Тот же результат при удалении линии. – MB34

0

Этот код написан для меня при использовании ob_get_contents

ob_start("ob_gzhandler"); 
echo trim($result); 
$gzcontent = ob_get_contents(); 
ob_end_clean(); 
Смежные вопросы