parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

В 3.4.1 вы этой «проблемы» не наблюдаете?

Sumo 28.06.2012 09:41 / 28.06.2012 09:54

Суть бага - в шаблон перестаёт подставляться текст из @showtext - вместо текста выводится "пробел".
Скорее всего проблема не в таинтах, а в том, что вам приходит из базы, т.е. надо проверять запросы. Простой тест, показывающий работоспособность таинтов при вашей схеме:
@main[]
$code[
^@m1[]
  ^^m2[]
^@m2[]
  ^$result[^^untaint[as-is]{Чистые и ^^taint[html][<грязные>] и ^^taint[<очищенные>] данные}]
]

^process{$code}
^m1[]
Получаем, как и ожидалось:
Чистые и &lt;грязные&gt; и <очищенные> данные
И вам тут нужен не untaint, а taint, поскольку все, что приходит от string:sql грязное, поэтому надо «покрасить» все сразу. В моем примере untaint оправдан именно потому, что в строке присутствуют куски с разной окраской.

Часто программисты считают, что untaint — это обратная операция для taint, но это совсем не так. Taint и untaint делают одно и тоже, только в первом случае красится вся строка, а во втором только куски строки с неопределенной окраской (в примере это должно быть видно четко).

p.s. Пожалуйста, не забываете про тег code, кода пишете сообщение в форум — без него читать код очень тяжело.