Баги 1.5.1

Традиция, блин, однако

#1 10 июля 2009 в 08:12
на каком сайте, где можно посмотреть?
#2 10 июля 2009 в 08:17
На этом сайте, например). Посмотреть можно здесь:
instantcms.ru/blogs/0/38/post195.html
#3 10 июля 2009 в 17:51

Как я поняла, ответ найден v

Солнечный ребёнок
Увы, Наталья, найден только баг, а лекарства пока нет (или я чего-то пропустил?)

Очень уважаю Виктора, проф. Спасибо ему. И классный парень love

Солнечный ребёнок
Спасибо. правда, на счет "проф" — это преувеличено.
Я не профи, я только учусь… у таких профи как Солнечный ребёнок. Поверьте — вот здесь без преувеличения.
#4 10 июля 2009 в 18:07
так найдено или не найдено лекарство?
#5 10 июля 2009 в 18:14
Для очистки адреса разработчики воспользовались функцией "htmlspecialchars ()"
  1. if ($href) { $attr .= ' href="/redirect?url='.htmlspecialchars($href).'"'; }
  2.  
Судя по описанию функция "htmlspecialchars ()" проглатывает знак "?" может стоит попробовать функцию "htmlentities ()".
Я, к сожалению, не разбираюсь в таких тонкостях 😥
#6 10 июля 2009 в 18:20
Мне кажется, Солнечный ребенок ошибочно поняла третий пост, как указание на лекарство найденное мною. На самом деле, это указание где можно посмотреть баг на этом сайте в действии.
Я не нашел упоминаний о способе лечения данного бага.
#7 11 июля 2009 в 06:44
Насколько я понял обработкой bb-кода занимается функция url_2html. Вот она:
  1. function url_2html($elem) {
  2. $attr = '';
  3. $href = $elem['attrib']['url'];
  4. if ( ! $href ) {
  5. foreach ($elem['val'] as $text) {
  6. if ('text'==$text['type']) { $href .= $text['str']; }
  7. }
  8. }
  9. $protocols = array(
  10. 'http://','https://','ftp://','file://','#','/','?','./','../'
  11. );
  12. $is_http = false;
  13. foreach ($protocols as $val) {
  14. if ($val==substr($href,0,strlen($val))) {
  15. $is_http = true;
  16. break;
  17. }
  18. }
  19. if (! $is_http) { $href = 'http://'.$href; }
  20. if ($href) { $attr .= ' href="'.htmlspecialchars($href).'"'; }
  21. $title = isset($elem['attrib']['title']) ? $elem['attrib']['title'] : '';
  22. if ($title) { $attr .= ' title="'.htmlspecialchars($title).'"'; }
  23. $name = isset($elem['attrib']['name']) ? $elem['attrib']['name'] : '';
  24. if ($name) { $attr .= ' name="'.htmlspecialchars($name).'"'; }
  25. $target = isset($elem['attrib']['target']) ? $elem['attrib']['target'] : '';
  26. if ($target) { $attr .= ' target="'.htmlspecialchars($target).'"'; }
  27. return '<a'.$attr.'>'.$this -> get_html($elem['val']).'</a>';
  28. }
  29. }
  30.  
Нигде по тексту не обнаружил обработки/обрезания адреса. Поэтому и предположил, что обрезается на обработке строки в htmlspecialchars(). Тогда наверно обрезается ранее перед вызовом этой функции (url_2html)
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.