Ошибка в 0.14

4 years 6 months ago #173 by fabrikant
fabrikant created the topic: Ошибка в 0.14
Добрый день. Опять возникла ошибка с недопустимыми символами.
Воспроизводится на библиотеке флибусты.
Переходы: По жанрам > Фантастика >  Постапокалипсис > A..Я(РУС)
Валится на "&" в описании книги
Лечение в sopds.cgi заменить процедуру entry_content2 на следующее.
def entry_content2(annotation='',title='',authors='',genres='',filename='',filesize=0,docdate='',series=''):
  enc_print('<content type="text/html">')
  if annotation!='':
     enc_print('&lt;p class=book&gt;'+websym(annotation)+'&lt;/p&gt;')
  if title!='':
     enc_print('&lt;b&gt;Название книги:&lt;/b&gt; '+websym(title)+'&lt;br/&gt;')
  if authors!='':
     enc_print('&lt;b&gt;Авторы:&lt;/b&gt; '+websym(authors)+'&lt;br/&gt;')
  if genres!='':
     enc_print('&lt;b&gt;Жанры:&lt;/b&gt; '+websym(genres)+'&lt;br/&gt;')
  if series!='':
     enc_print('&lt;b&gt;Серии:&lt;/b&gt; '+websym(series)+'&lt;br/&gt;')
  if filename!='':
     enc_print('&lt;b&gt;Файл:&lt;/b&gt; '+websym(filename)+'&lt;br/&gt;')
  if filesize>0:
     enc_print('&lt;b&gt;Размер файла:&lt;/b&gt; '+str(fsize//1000)+'Кб.&lt;br/&gt;')
  if docdate!='':
     enc_print('&lt;b&gt;Дата правки:&lt;/b&gt; '+docdate+'&lt;br/&gt;')
  enc_print('</content>')
В принципе, для фикса ошибки достаточно было 
enc_print('&lt;p class=book&gt;'+websym(annotation)+'&lt;/p&gt;')
но, на мой взгляд, есть ненулевая вероятность, что рано или поздно попадутся такие строки и в других полях.
Ну и до кучи. Может стоить добавить в def websym обработку ">"? Тоже ведь всплывет рано или поздно. Типа такого:
def websym(s,attr=False):
    """Replace special web-symbols"""
    result = s
    if attr:
        table = {'"':'\''}
    else:
        table = {'&':'&amp;','<':'&lt;','>':'&gt;'}
    for k in table.keys():
        result = result.replace(k,table[k])
    return result;
Не стал отправлять через github. Все равно мои изменения руками вносите :) Если вносите :))

Please Войти or Create an account to join the conversation.

  • fabrikant
  • fabrikant's Avatar Topic Author
  • Offline
  • Новый участник
  • Новый участник
More
4 years 6 months ago - 4 years 6 months ago #174 by mitshel
mitshel replied the topic: Ошибка в 0.14
Конечно-же вношу Ваши исправления и через гихаб тоже. Спасибо за помощь.
В прошлый раз просто очень мелкое исправление было. Действительно легче было тогда просто исправить руками.
А с закрывающим символом > думаю проблем-то не должно быть.
Спасибо.
Last Edit: 4 years 6 months ago by mitshel.

Please Войти or Create an account to join the conversation.

  • mitshel
  • mitshel's Avatar
  • Offline
  • Администратор
  • Администратор
More
Time to create page: 0.165 seconds