LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
27.05.2012, 11:12:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: SOBI2 удаляет кавычки в названии объявления  (Прочитано 1085 раз)
0 Пользователей и 1 Гость смотрят эту тему.
NOJEK
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 96



« : 26.08.2011, 21:55:12 »

Добрый вечер!
Господа, по этой проблеме писалось много, но конкретного решения я так и нашёл.
Если плохо искал подскажите где рыть.
Замена на одинарные мне кажется неправильным. А вот замена на ёлочки было бы супер.
Есть даже функция, которая это будет делать. Куда её вставить?

function replace_quotes($string)
{
   $pos = 0;
   while (FALSE !== ($pos = strpos($string, '"', $pos)))
   {
      $string = substr_replace($string, (isset($string[$pos+1]) && ctype_graph($string[$pos+1]) || $pos == 0)? '«' : '»', $pos, 1);
      $pos += 6;
   }
   return $string;
}

Заранее благодарен!
« Последнее редактирование: 27.08.2011, 10:20:50 от NOJEK » Записан
Roof
Захожу иногда
**

Репутация: +3/-0
Offline Offline

Сообщений: 11


« Ответ #1 : 10.09.2011, 03:43:16 »

Сегодня столкнулся с этой проблемой и набрел на эту тему. С ёлочками решил не разбираться.
Вопрос решить мне удалось в таком виде - заголовок с кавычками "" при редактировании записи как пользователем с front-end'а так и администратором с back-end'а отображается корректно.
Опишу свое решение вопроса.

1) У меня есть запись с заголовком
"RELIFE" ООО Центр Коммерческой Недвижимости
и полем Город "Калининград" - именно в кавычках, ставил для эксперимента. Да и начало заголовка с кавычки тоже только для эксперимента поставил.
Соответственно при редактировании записи как пользователем front-end'а так и администратором с back-end'а заголовок в поле редактирования не отображается, а в поле Город отлично отображается  - "Калининград".
2) В исходном коде страницы эти поля выглядят так:

Код:
...
<input type="text" id="field_entry_name" class="inputbox"  name="field_entry_name" size="55" maxlength="55" value=""RELIFE" ООО Центр Коммерческой Недвижимости"/>
...
<input type="text" id="field_city" class="inputbox"  name="field_city" size="30" maxlength="100"   value="&quot;Калининград&quot;" /
...

Причем в базе заголовок и город хранятся одинаково
\"Калининград\"
\"RELIFE\" ООО Центр Коммерческой Недвижимости

3) Файл, в котором кусок кода, отвечающий за выдачу на страницу редактирования записи поля редактирования заголовока  - .../components/com_sobi2/form.class.php
Я ничего лучше не придумал, как сделать такую замену:

Код:
...
/*
    * when editing existing entry
    */
    if( isset( $this->item ) && is_a( $this->item, "sobi2" ) ) {
    //$value = $this->item->title; - эту строку заменим
      $value = htmlspecialchars($this->item->title);     
   
    }
    else {
    $value = null;
    }
...

Теперь при редактировании  записи пользователем с front-end'а заголовок в поле редактирования отображается корректно:

Код:
...
<input type="text" id="field_entry_name" class="inputbox"  name="field_entry_name" size="55" maxlength="55" value="&quot;RELIFE&quot; ООО Центр Коммерческой Недвижимости"/>
...

4) Для back-end'а поступим аналогичным образом.
Файл .../administrator/components/com_sobi2/admin.sobi2.class.html.php
Произведем небольшую замену:
Код:
...
<tr>
<td colspan="2"><?php echo _SOBI2_FORM_FIELD_REQ_INFO; ?></td>
</tr>
<tr>
<td><label for="field_entry_name"><?php echo $config->efEntryTitleLabel._SOBI2_FORM_FIELD_REQ_MARK ?></label></td>
<td><input type="text" id="field_entry_name" class="text_area"  name="field_entry_name" size="50" maxlength="255" value="<?php echo /*эту часть строки меняем $this->item->title*/  htmlspecialchars( $this->item->title ) ; ?>"/></td>
</tr>
...

Все. Теперь заголовки с кавычками должны корректно отображаться в полях редактирования как для пользователя, так и для администратора во front-end'е и  back-end'е соответсвенно.
« Последнее редактирование: 10.09.2011, 03:50:45 от Roof » Записан
SDKiller
Практически профи
*******

Репутация: +204/-2
Offline Offline

Сообщений: 2021


На всё давно отвечено - ищите


« Ответ #2 : 10.09.2011, 04:14:17 »

Я ничего лучше не придумал, как сделать такую замену...

А ничего лучше тут и в самом деле не придумаешь )))
Записан
devul
Давно я тут
****

Репутация: +16/-0
Offline Offline

Сообщений: 319



« Ответ #3 : 17.09.2011, 17:02:35 »

ох как в тему, только что наткнулся на эту проблему, поковырялся 15 мин в коде и уже пошел по вышеописанному пути, но ошибся в синтаксисе, не заработало и пошел в поиск) и вуоля - оно! пасиб)
Записан
NetSkyer
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 11


« Ответ #4 : 27.09.2011, 23:27:45 »

всё хорошо, да у меня вот что обнаружилось...

авторизовался на сайте. добавил запись с заголовком "M&M's" (одинарная ковычка в названии). зашел на страницу с этой записью и нажал кнопочку "выход". В ответ получаю переход в начало каталога с ошибкой: Warning: sobi_sef:: DB reports: DB function failed with error number 1064

Если одинарной кавычки нет, а просто двойные, то просто перекидывает в корень каталога.
Записан
Roof
Захожу иногда
**

Репутация: +3/-0
Offline Offline

Сообщений: 11


« Ответ #5 : 28.09.2011, 17:55:31 »

Не знаю что у Вас за ошибка - только что добавил с фронта "M&M's" и все, как и ожидалось, работает отлично
Записан
NOJEK
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 96



« Ответ #6 : 29.09.2011, 00:33:14 »

всё хорошо, да у меня вот что обнаружилось...

авторизовался на сайте. добавил запись с заголовком "M&M's" (одинарная ковычка в названии). зашел на страницу с этой записью и нажал кнопочку "выход". В ответ получаю переход в начало каталога с ошибкой: Warning: sobi_sef:: DB reports: DB function failed with error number 1064

Если одинарной кавычки нет, а просто двойные, то просто перекидывает в корень каталога.

sobi_sef вот где надо копать
Roof +1
Записан
NetSkyer
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 11


« Ответ #7 : 30.09.2011, 20:40:19 »

Добрый вечер!
Господа, по этой проблеме писалось много, но конкретного решения я так и нашёл.
Если плохо искал подскажите где рыть.
Замена на одинарные мне кажется неправильным. А вот замена на ёлочки было бы супер.
Есть даже функция, которая это будет делать. Куда её вставить?

function replace_quotes($string)
{
   $pos = 0;
   while (FALSE !== ($pos = strpos($string, '"', $pos)))
   {
      $string = substr_replace($string, (isset($string[$pos+1]) && ctype_graph($string[$pos+1]) || $pos == 0)? '&laquo;' : '&raquo;', $pos, 1);
      $pos += 6;
   }
   return $string;
}

Заранее благодарен!

Уважаемый NOJEK!
Если речь идет о замене кавычек на ёлочки при добавлении, то попробуйте здесь: \com_sobi2\sobi2.class.php

Код:
/*
 * this field_entry_name are not editable and have to be allways there
 */

      $string = strip_tags( sobi2Config::request( $_POST, 'field_entry_name', null, 0x0002 ) );
      $dont = array ("`","'");
      $string = str_replace($dont, "\"", $string);
      
      $pos = 0;
      while (FALSE !== ($pos = strpos($string, '"', $pos)))
      {
         $string = substr_replace($string, (isset($string[$pos+1]) && ctype_graph($string[$pos+1]) || $pos == 0)? '&laquo;' : '&raquo;', $pos, 1);
         $pos += 6;
      }

      $this->title = $config->clearSQLinjection( $string );
      $this->title = $this->cleanInput( $this->title );

Пробовал вписать функцию, которую Вы привели в пример, получилось.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet