Забыли пароль?
Запросите новый здесь.

Автор темы: Pisatel
ID темы: 1268
Информация:
Тема содержит 26 сообщения, была просмотрена 27302 раз.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Моды
 Распечатать тему
Ошибка Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/bla/da
Pisatel
Доброго времени суток! Поставил сие чудо бб код в статьях и новостях себе- при выводе статьи выдает ошибку
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/бла/data/www/бла.ru/includes/bbcodes/phphighlight/PHP_Highlight.php on line181
Версия фьюжн 7.02.06, в статье использую ббкоды [*php] и [*members]. В чем может быть проблема? Гугл не помог особо... Пробую эту же статью на форум добавить- все отображется без ошибок. Кстати, в статье ошибку показывает несколько раз подряд сверху, однако потом идет статья со всеми ббкодами. Пробовал вернуть родной файл вывода статей, добавив в него лишь при выводе статьи parseubb- так же работает, но с этой же ошибкой вверху. Буду благодарен за помощь.
 
Web
jikaka
любая статья выдает такое?
в новостях нормально все?
 
Web
Pisatel
Нет, не любая, только где есть вывод php. Подозреваю, что проблема с слешем при выводе из базы, или при записи...
 
Web
Vova
Всё решаеться. Либо заекранировать слеши, либо применить функцию stripinput вместо addslash.
 
Web
Pisatel
Vova написал:

Всё решаеться. Либо заекранировать слеши, либо применить функцию stripinput вместо addslash.

Это при записи, я так понимаю?
 
Web
Pisatel
Изменил addslash на stripinput, все работает, ошибки нет. Однако вопрос: может ли это как-то повлиять на безопасность?
 
Web
Polarfox
На вывод повлияет, экранирует все рабочие символы.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
Pisatel
Уже вижу эту новую проблему: теперь все символы в [*php] выводит как & gt; и т.д. Пробую htmlspecialchars- вообще беда...
 
Web
Vova
Скачать исходники  Код
function unstripinput($text) {
   if (!is_array($text)) {
      $text = trim($text);
      $search = array("&", """, "'", "\", """, "'", "<", ">");
      $replace = array("&", "\"", "'", "\\", '\"', "\'", "<", ">");
      $text = preg_replace("/(&amp;)+(?=\#([0-9]{2,3});)/i", "&", str_replace($search, $replace, $text));
   } else {
      foreach ($text as $key => $value) {
         $text[$key] = unstripinput($value);
      }
   }
   return $text;
}




Для нормальной работы unstripinput();. Используй для виходного текста.
 
Web
Rush
вечная проблема) есть еще htmlspecialchars_decode
 
Web
Pisatel
Vova написал:

Для нормальной работы unstripinput();. Используй для виходного текста.

Вот это в самый раз! От души благодарю! Надо будет ее в maincore добавить, думаю, еще пригодится:-)
 
Web
Pisatel
Rush написал:

вечная проблема) есть еще htmlspecialchars_decode

Ставил перед самым выводом- мне вообще всю страницу выдавало в html- исходнике. Ставил после parseubb(htmlspecialchars($articles))- результата никакого. В общем, unstripinput помогла, хоть и не раскрыта суть проблемы: почему выдавало такую ошибку? Может, версия php у хостера старая? Можно было, конечно, влепить
Скачать исходники  Код
error_reporting(0);


в начало страницы, ведь ошибка не влияла на вывод, но мы ж не ищем легких путей! :-):-)
 
Web
Polarfox
Вообще если снимать слеши сразу а потом парсить ббкоды - проблем не будет. Тк код получается схожим с форумным по всем свойствам.

Убираем слэши -> парсим бб -> вывод
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
Pisatel
Вывод так и был там реализован: nl2br(stripslashes(parseubb(parsesmileys($article)))), я ж в первом посте писал, что вывод работает, все хорошо отображается... но только после ошибки на полэкрана.
 
Web
Polarfox
Твоя моя понимать? Или просто читать и быстро ответ писать?
У тебя сначала ббкоды парсятся, потом снимаются экраны уже, посмотри внимательно.
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
Pisatel
Понимать, понимать. В общем, свершилось чудо. Со злости снес все исправленные файлы и поставил из архива заново- о май гот, все работает! Не знаю, че это было. Правда, статьи последние пришлось править вручную. Всех благодарю за помощь.
 
Web
Polarfox
Волшебство есть! А они мне не верили!
Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
Pisatel
Есть, есть волшебство! Я уверен в этом.
Еще один косяк нашел, правда, он не относится к представленному моду. Если на форуме включен ббкод [*spo] или [*spoiler2]- не используется, а именно просто включен, то при нажатии на принт- распечатать- мы получаем вот такую ошибку:
Тема: Youtube: вывод информации о видео на сайте
Прислано Pisatel (profile.php?lookup=1)
08-02-2013 10:30
#1
Fatal error: Call to undefined function add_to_head() in /var/www/бла/data/www/бла.ru/includes/bbcodes/spo_bbcode_include.php on line23
Та функция подключает js. Кто-нибудь сталкивался с этим?
 
Web
Polarfox
Конечно сталкивался, я все такие выводы обернул в проверку, но кто это делает кроме меня?

Можешь добавить в print.php
Загрузить источник  GeSHi: PHP
  1. if(!function_exists('add_to_head')){function add_to_head($var){return true;}}
Добавлено за 0.023 секунд, используя GeSHi 1.0.8.10

Всегда делайте backup перед изменениями | Указывайте свою версию в подписи/профиле. | Вся бесплатная тех. поддержка только на форуме
 
Pisatel
PolarFox, просто супер! Благодарю! Небольшой оффтоп: а почему этого никто не делает, кроме тебя? Я делаю:-)
 
Web

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум: