--- parser3/src/doc/string.dox 2001/05/03 15:05:20 1.1 +++ parser3/src/doc/string.dox 2001/05/07 13:29:56 1.2 @@ -1,35 +1,35 @@ /** @page String String -В памяти строки[String] хранятся в виде списка фрагментов[String::Chunk::Row .item], -каждый помнит язык, на котором написан фрагмент. -Фрагменты, полученные из скриптов считаются чистыми(String::Untaint_lang ::UL_CLEAN), -а от пользователя - из environment, из form, с диска[table:load] или из sql сервера[table:sql] -считаются испачканными(String::Untaint_lang ::UL_TAINTED), -при операциях со строкой её могут расделять на части, но получающиеся части по-прежнему помнят свой язык. -Строку могут записать в Request.wcontext, задав ей язык. -При этом язык задаётся всем её испачканным частям, они становятся не неопределённо грязными[UL_TAINTED], -а "грязными, но известно, что нужно с ними сделать, чтобы стали чистыми, т.е. известен их язык". -скажем +б ОЮЛЪРХ ЯРПНЙХ[String] УПЮМЪРЯЪ Б БХДЕ ЯОХЯЙЮ ТПЮЦЛЕМРНБ[String::Chunk::Row .item], +ЙЮФДШИ ОНЛМХР ЪГШЙ, МЮ ЙНРНПНЛ МЮОХЯЮМ ТПЮЦЛЕМР. +тПЮЦЛЕМРШ, ОНКСВЕММШЕ ХГ ЯЙПХОРНБ ЯВХРЮЧРЯЪ ВХЯРШЛХ(String::Untaint_lang ::UL_CLEAN), +Ю НР ОНКЭГНБЮРЕКЪ - ХГ environment, ХГ form, Я ДХЯЙЮ[table:load] ХКХ ХГ sql ЯЕПБЕПЮ[table:sql] +ЯВХРЮЧРЯЪ ХЯОЮВЙЮММШЛХ(String::Untaint_lang ::UL_TAINTED), +ОПХ НОЕПЮЖХЪУ ЯН ЯРПНЙНИ Е╦ ЛНЦСР ПЮЯДЕКЪРЭ МЮ ВЮЯРХ, МН ОНКСВЮЧЫХЕЯЪ ВЮЯРХ ОН-ОПЕФМЕЛС ОНЛМЪР ЯБНИ ЪГШЙ. +яРПНЙС ЛНЦСР ГЮОХЯЮРЭ Б Request.wcontext, ГЮДЮБ ЕИ ЪГШЙ. +оПХ ЩРНЛ ЪГШЙ ГЮДЮ╦РЯЪ БЯЕЛ Е╦ ХЯОЮВЙЮММШЛ ВЮЯРЪЛ, НМХ ЯРЮМНБЪРЯЪ МЕ МЕНОПЕДЕК╦ММН ЦПЪГМШЛХ[UL_TAINTED], +Ю "ЦПЪГМШЛХ, МН ХГБЕЯРМН, ВРН МСФМН Я МХЛХ ЯДЕКЮРЭ, ВРНАШ ЯРЮКХ ВХЯРШЛХ, Р.Е. ХГБЕЯРЕМ ХУ ЪГШЙ". +ЯЙЮФЕЛ @verbatim ^table:sql{insert into news (title) values ('$form:title')] @endverbatim -при обработке параметра посредством Temp_lang выставляется "текущий язык"[Request::flang], -и при записи[Request::write_assign_lang] UL_TAINTED строки из $form:title фрагмента параметра -метода sql, находящегося в кавычках, получает язык UL_SQL. +ОПХ НАПЮАНРЙЕ ОЮПЮЛЕРПЮ ОНЯПЕДЯРБНЛ Temp_lang БШЯРЮБКЪЕРЯЪ "РЕЙСЫХИ ЪГШЙ"[Request::flang], +Х ОПХ ГЮОХЯХ[Request::write_assign_lang] UL_TAINTED ЯРПНЙХ ХГ $form:title ТПЮЦЛЕМРЮ ОЮПЮЛЕРПЮ +ЛЕРНДЮ sql, МЮУНДЪЫЕЦНЯЪ Б ЙЮБШВЙЮУ, ОНКСВЮЕР ЪГШЙ UL_SQL. -String можно преобразовать в обычную С-строку, используя String::cstr(). -При этом будут учтены языки фрагментов и произведены соответствующие вычищения. -Также можно воспользоваться String::cstr(String::Untaint_lang), при этом будет все фрагменты строки -насильно будути считаться написаннами на этом языке. Безотносительно к указанному во фрагменте языку. -Такое используется, например, для работы с именами файлов: +String ЛНФМН ОПЕНАПЮГНБЮРЭ Б НАШВМСЧ я-ЯРПНЙС, ХЯОНКЭГСЪ String::cstr(). +оПХ ЩРНЛ АСДСР СВРЕМШ ЪГШЙХ ТПЮЦЛЕМРНБ Х ОПНХГБЕДЕМШ ЯННРБЕРЯРБСЧЫХЕ БШВХЫЕМХЪ. +рЮЙФЕ ЛНФМН БНЯОНКЭГНБЮРЭЯЪ String::cstr(String::Untaint_lang), ОПХ ЩРНЛ АСДЕР БЯЕ ТПЮЦЛЕМРШ ЯРПНЙХ +МЮЯХКЭМН АСДСРХ ЯВХРЮРЭЯЪ МЮОХЯЮММЮЛХ МЮ ЩРНЛ ЪГШЙЕ. аЕГНРМНЯХРЕКЭМН Й СЙЮГЮММНЛС БН ТПЮЦЛЕМРЕ ЪГШЙС. +рЮЙНЕ ХЯОНКЭГСЕРЯЪ, МЮОПХЛЕП, ДКЪ ПЮАНРШ Я ХЛЕМЮЛХ ТЮИКНБ: @verbatim ^table:load[$form:file_name] @endverbatim -здесь при обычной обработке $form:file_name вышел бы UL_USER_HTML, а нужен UL_FILE_NAME, -при этом глупо всё время подобное делать, как для table:sql, настаивая на {} параметрах. +ГДЕЯЭ ОПХ НАШВМНИ НАПЮАНРЙЕ $form:file_name БШЬЕК АШ UL_USER_HTML, Ю МСФЕМ UL_FILE_NAME, +ОПХ ЩРНЛ ЦКСОН БЯ╦ БПЕЛЪ ОНДНАМНЕ ДЕКЮРЭ, ЙЮЙ ДКЪ table:sql, МЮЯРЮХБЮЪ МЮ {} ОЮПЮЛЕРПЮУ. -Обычным языком вывода является String::Untaint_lang::UL_USER_HTML, -исключение составляет CGI скрипт, который запускают вне веб-сервера, -в этом случае используется язык UL_AS_IS. +нАШВМШЛ ЪГШЙНЛ БШБНДЮ ЪБКЪЕРЯЪ String::Untaint_lang::UL_USER_HTML, +ХЯЙКЧВЕМХЕ ЯНЯРЮБКЪЕР CGI ЯЙПХОР, ЙНРНПШИ ГЮОСЯЙЮЧР БМЕ БЕА-ЯЕПБЕПЮ, +Б ЩРНЛ ЯКСВЮЕ ХЯОНКЭГСЕРЯЪ ЪГШЙ UL_AS_IS. */ \ No newline at end of file