Автор
|
Тема: Сброс из темы 'Форум'
|
Pipa
|
написано:28-02-2003 16:47:29
|
46
|
sergejh: <FONT SIZE=2 COLOR=#0033CC>Не вырезает изнутри ссылки OnMouseОvеr</FONT>
Написано же тебе черным по белому, что в слоге "оn", по твоей же милости, русская буква! Замени ее на латинскую - скрипт dt заработает! А может, наоборот, - ты еще до применения скрипта успел раньше подменить латинскую "о" на русскую. Разберись. ---- Pipa
<font size="1" color="#CCCCCC">Исправлено: 28-02-2003 17:04:54</font>
ц и т а т а
|
sergejh
|
написано:28-02-2003 17:15:45
|
47
|
Тю... Не поймешь вас, где английская, где русская буква, поперепутали всё. :) Действительно, работает теперь.
Weather Report Не надо только шуток. Это серьезное предложение или нет?
ц и т а т а
|
dt
|
написано:28-02-2003 23:25:54
|
48
|
Pipa RTFM! Перл без документации изучать - дохлый номер :) Я сам только на днях узнал, что regexp'ы можно даже в split засовывать :) ...что потуги "отредактировать наоборот", для того чтобы заполнить форму при вызове редактирования сообщений - в общем случае невозможны Гон! Если можно преобразовать в одну сторону, можно и в другую! Говорю на основе собственного опыта - я ведь тоже в свое время форум писал, у меня в обе стороны преобразовывалось без проблем :) А если хранить в базе исходные сообщения, то при формировании хтмл отжирается куча лишних ресурсов, чего можно избежать, если преобразовывать сразу. (я в курсе, что у меня параноя на почве оптимизации, но увы, ничего не могу с собой поделать :))))
Для сбора документальных подтверждений обычно существует системный лог, в который пишется все и по порядку. Это гораздо удобнее, чем лазить по всем темам подряд и выискивать запрещенные теги или попытки нагадить ;)
ЗЫ: У меня все ходы записаны! Только что специально посмотрел - в скрипте, который у меня на диске остался "о" английская, это форум (наверняка не без помощи сергеича) мудрит :) ЗЗЫ: (оффтопик ;)) pipa, ты вроде в js разбираешься, к тебе вопросик такой: не знаешь случайно, как правильнее писать: @^lt;a href="javasсript:fn()"@^gt; или @^lt;a href="#" оnСlick="fn()"@^gt;? ЗЗзЫ: и еще вспомнил: сергеич, на сознане уже где-то неделю quick_date выдает ошибку "zero sized reply" (точнее ошибку выдает прокси). Подозреваю правда, что в этом виноват хостинг либо сам прокси, но глянь все же плз :)
ц и т а т а
|
Потный Мекс
|
написано:28-02-2003 23:53:07
|
49
|
Какие вы все умные. Почему я один дурак? Вот ведь...
ц и т а т а
|
Pipa
|
написано:01-03-2003 01:05:23
|
50
|
dt: Перл без документации изучать - дохлый номер :)
В инете этой документации завались! Чего тебе мешает? А в прочем ... и с документацией тоже не сладко :-).
dt: Я сам только на днях узнал, что regexp'ы можно даже в split засовывать :)
А я год назад даже не знала, что Perl и JavaScript существуют :-))). А про HTML только слово слышала.
Pipa: ... потуги "отредактировать наоборот", для того чтобы заполнить форму при вызове редактирования сообщений - в общем случае невозможны... dt: Гон! Если можно преобразовать в одну сторону, можно и в другую!
Я же написала - "общем случае"! И то, что иногда это сделать удается не опровергает моего утверждения. Доказательство этому таково: Положим, что преобразование заключается в замене абстрактного элемента текста "А" на другой элемент - "В". Т.е. A -> B. Тогда в тексте, содержащем одновременно элементы "А" и "В", после преобразования число элементов "В" увеличится за счет "А". Однако обратное преобразование будет невозможно, т.к. среди совершенно одинаковых элементов "В" уже невозможно узнать те, которые получились из "А", а какие были такими до преобразования. Частным случаем этого утверждения являются преобразования, состоящие в удалении элементов (например, class, style или оnМоuseOver). Ясно даже и ежу :-))), что обратного преобразования этому действию нет. Ведь совершенно невозможно решить, какое из запрещенных выражений было удалено.
dt: А если хранить в базе исходные сообщения, то при формировании хтмл отжирается куча лишних ресурсов, чего можно избежать, если преобразовывать сразу.
Так или иначе будет всего единственный акт преобразования: либо сразу при получении, либо при формировании html-страницы. Напоминаю, что таблицы на здешнем форуме НЕ генерятся динамически при каждом запросе, а приготавливаются однократно и затем доступны в виде своих html-текстов. Тем не менее перенос преобразованиена акт приготовления страницы обоадает несомненными преимуществами: 1) Позволяет упростить процедуру редактирования, т.к. исходный текст всегда под рукой и его можно отправить назад без каких-либо дополнительных обратных преобразований. 2) Если вдруг оказывается, что применяемое преобразование оказалось несовершенным, то имеется возможность перегенерить страницу, используя более совершенное преобразование.
dt: у меня параноя на почве оптимизации, но увы, ничего не могу с собой поделать :))))
У кого она на почве ускорения, а у кого в размере кода :-)
dt: Только что специально посмотрел - в скрипте, который у меня на диске остался "о" английская, это форум (наверняка не без помощи сергеича) мудрит :)
Ясное дело. Это я ему в свое время идейку подкинула заменять в оnМоuse латынь на русские. А теперь вот боком вышло. Несомненно твой скрипт лучше этой идеи. ---- Pipa
ц и т а т а
|
Pipa
|
написано:01-03-2003 01:06:04
|
51
|
dt: pipa, ты вроде в js разбираешься, к тебе вопросик такой: не знаешь случайно, как правильнее писать: @^lt;a href="javasсript:fn()"@^gt; или @^lt;a href="#" оnСlick="fn()"@^gt;? <small> Правильность - это одно, а функциональность другое. Если следовать "букве закона", то первая конструкция правильнее тем, что во второй стоит отсутствующая ссылка. Например, HTML-чекеры обругают вторую конструкцию (не найдя ссылки), но примут первую без разговоров. Однако на вкус и цвет товарищей нет :-). Вот мне, например, вторая конструкция нравится больше. Причин две: 1) При отключенном JаvаSсriрt'e или при уже свершившейся в нем ошибке на странице, первая конструкция обращается "в никуда", вызавая 404-ую ошибку. В то время, как вторая просто не работает, без каких-либо эксцессоов. 2) Во второй конструкции частенько можно обработчик оnClick вынести в тег bоdy, сделав его один на все множество ссылок. В уж в этом обработчике совсем не сложно узнать какая из ссылок вызвала событие оnClick, вытянуть из-под нее текст и сформировать общее для всех ссылок действие. Например, в MSIE текст долбанутой ссылки будет таков - event.srcElement.innerHTML - его можно скажем в чате использовать, как обращение, отправляя в строку ввода. Тогда будь в чате хоть 100 участников, вставку ника сделает единственный обработчик в теге body подобного содержания: input.value+=event.srcElement.innerHTML; Причем никакого JavaScripta в каждую ссылку на участника вставлять не надо. Тем не менее, не все в жизни хорошо... Увы. И я считаю своим долгом испортить ту радужную картину, которую только что нарисовала. А дело в том, что если ты последуешь моему совету, то чат у тебя работать перестанет :-). И вина за это лежит не в правильности или неправильности JavaScript-конструкций, в тонких особенностях браузеров. Беда в том, что ДОБАВЛЕНИЕ текста в окно ввода очень чувствительно к нахождению в этот момент курсора. И если он в момент вставки/модификации текста где-то "гуляет", то курсор вполне может после такой операции сброситься в начало строки, вместо того, чтобы остаться там, где он был раньше. Причем процедура focus() только усугубит положение тем, что ее директива конфликтует с общим правилом GUI-интерфейса - "кликнутая мышь притягивает фокус". Возникает противоречивая ситуация: клик ссылки в другом фрейме требует, чтобы курсор переместился туда, а обработчик клика требует, чтобы фокус ушел в другое окно. Результат будет зависить от скорости компьютера, однако скорее всего команда focus() будет проигнорирована - мышь окажется сильнее. Тем не менее, обработчик из-под href=jаvаsсriрt:код скорее всего сработает правильно под MSIE, т.к. так как ссылки срабатывают в нем уже после того, как последствия мышиного воздействия закончились. Из последнего обработчика команда focus() будет выполнена верно. Если ты еще не усох от моих объяснений :-), то можешь проверить, как работает вставка ников твоего чата под браузером Opera-7. После этого интерес к тому, что я здесь написала у тебя заметно поднимется :-))). P.S. Все эти премудрости я узнала в процессе почти годового "прятанья" невидимкой в чате на necromancers.com. В твоем чате гостевой вход является нормой, а там жестоко преследуется :-). Захочешь выжить - выучишь и Perl, и JavaScript! :-))) </small> ---- Pipa<font size="1" color="#CCCCCC">Исправлено: 01-03-2003 01:18:16</font>
ц и т а т а
|
Weather Report
|
написано:01-03-2003 13:43:49
|
52
|
sergejh совершенно сурьёзно ! (сделал сурьёзную рожу)
ц и т а т а
|
sergejh
|
написано:01-03-2003 14:31:46
|
53
|
dt <FONT SIZE=2 COLOR=#0033CC>Для сбора документальных подтверждений обычно существует системный лог</FONT>
Какой еще "системный"? Системный - то есть программируемый мною или там, на компьютере хостера? Если на компе хостера (где какой-нибудь Unix стоит), тогда этот лог нам недоступен. :) А если самому писать что-то в лог - на это тратится лишние обращения к винчестеру (опять же, на компьютере хостера) и такты процессора.
<FONT SIZE=2 COLOR=#0033CC>на сознане уже где-то неделю quick_date выдает ошибку...</FONT>
Вранье! :)) Я каждый день (почти) по Quick Date читаю там письма, и всё нормально. Вот сейчас проверил на всякий случай - нормально работает. Но с хостингом проблемы какие-то - да. Иногда скрипт обрывается и выдает что-то вроде "not found". Нужно просто еще раз нажать "обновить". А иногда еще раз и еще раз. :) Это не я виноват, а бесплатный хостинг.
Далее. Итак, мысли такие. В базе храню оригинал сообщения. А при генерировании привожу его к нужному виду и делаю HTML. (Генерирование html происходит в следующих случаях: -создать новое сообщение -послать ответ на сообщение -сохранить отредактированное сообщение -по скрипту администрирования)
Алгоритм генерации теперь планирую сделать такой: 1) $mtext = ... #получили текст из базы (со всеми тегами, классами и т.п. - весь хлам, который решил написать пользователь) 2) вырезаем из него все опасные вещи: class, оn, style, size, color 3) далее снова анализируем: если есть @^lt;fоnt, добавляем туда @^lt;fоnt style=... для приведения любой попытки изменить fоnt к единому стилю 4) если есть @^lt;a href, добавляем @^lt;a href="..." class="...", т.е. все введенные ссылки приводим к единому классу. 5) вставляем $mtext в генерируемую HTML страницу
Здесь есть один момент, о котором я хотел спросить помощи. Как выполнить пункты 3 и 4? Т.е., как добавить внутрь тега определенную конструкцию? Прошу код. :) (Как вырезать, вроде уже сказали)
ц и т а т а
|
paramita
|
написано:01-03-2003 17:05:49
|
54
|
sergejh, а можно из старого форума восстановить темы про книги и кино?
ц и т а т а
|
sergejh
|
написано:01-03-2003 17:31:03
|
55
|
paramita Приведи точные номера. Вот в таком примерно виде: [номер старого раздела] - [номер темы] - [номер нового раздела, куда перенести]. Тогда без проблем перенесу. А сам копаться искать, где там про музыку, где что - не хочу. :) Кстати, вот ссылка для просмотра старых тем списком. Параметр forum=N, где N = номер раздела. http://www.nagualism.ru/cgi-bin/ef3/oldtopics.cgi?forum=1
ц и т а т а
|
Temus
|
написано:01-03-2003 18:29:57
|
56
|
<FONT SIZE=2 COLOR=#0033CC>если есть @^lt;a href, добавляем @^lt;a href="..." class="...", </FONT>
Это делается не так. Пишешь на ячейку с текстом @^lt;td class=my@^gt; а в стилях пишешь: .my a:link,.my a:visited,.my a:active { ... } .my a:hover { ... } .my em {color: #03C; fоnt: italic small Verdana,Arial} и т.д.
Я смотрю тут одни кодеры собрались. Наконец-то людям будет о чём поговорить, а там можно и форум переименовать... :-)
ц и т а т а
|
zulus
|
написано:01-03-2003 23:54:49
|
57
|
sergejh У меня почему-то не сохраняются страницы после отключения от инета.Другие форумы сохраняются а этот нифига.
ц и т а т а
|
Pipa
|
написано:02-03-2003 00:20:50
|
58
|
sergejh
Пожалуй с разговорами о программировнии действительно уже перебор, даже для этой темы. Поэтому посылаю свои предложения мылом, сразу на 2 адреса: sergejh@rambler.ru и sergejh@mailru.com (не знаю, который из них правильней). ---- Pipa
ц и т а т а
|
Потный Мекс
|
написано:02-03-2003 00:52:26
|
59
|
Сергеич, твоя квикдейт - это... гм... Ну почему бы тебе не сделать как везде - на куках?
ц и т а т а
|
dt
|
написано:02-03-2003 01:49:43
|
60
|
Pipa Частным случаем этого утверждения являются преобразования, состоящие в удалении элементов (например, class, style или оnМоuseOver). Ясно даже и ежу :-))), что обратного преобразования этому действию нет. Ведь совершенно невозможно решить, какое из запрещенных выражений было удалено. Так они же все равно при сохранении опять удалятся, зачем их показывать в "правке"?? Надо экономить такты процессора, байты траффика и место на диске :) (и зачем вообще отличать "А" от "Б", если в конечном итоге все "А" все равно будут выглядеть как "Б")
таблицы на здешнем форуме НЕ генерятся динамически при каждом запросе, а приготавливаются однократно и затем доступны в виде своих html-текстов. Не однократно, а каждый раз, когда добавляется новое сообщение, или исправляется уже существующее. Если в теме десяток ответов, это действительно несущественно, но если кто-то решит ответить в тему "АПК вопросы и ответы" (в которой почти 40 страниц), то он рискует не дождаться результата вообще (хотя он и так его может не дождаться :))
При отключенном JаvаSсriрt'e или при уже свершившейся в нем ошибке на странице, первая конструкция обращается "в никуда", вызавая 404-ую ошибку. Насколько я знаю, 404 не будет, поскольку она ссылается не "в никуда", а на якорь с неуказанным именем на текущей странице, т.е. броузер при виде такой ссылки просто ее проигнорирует. И кстати думается мне, что из-за более широкой "специализации" тега href, глюки при вызове скрипта через него более вероятны, чем при вызове через оnClick :)
sergejh "Системный лог" - мне просто нравится, как это звучит :) Да и по другому называть будет либо длинно, либо непонятно. Конкретно в случае моего чата, это специальный лог, куда пишется различная информация, к которой обычным пользователям доступа быть не должно - все входы/выходы, ошибки, попытки прорваться через бан, айпишники конечно, и тому подобное. Ресурсы тратятся конечно, но во-первых, безопасность требует жертв, а во-вторых, на повторяющиеся много раз преобразования их уходит куда больше.
Как выполнить пункты 3 и 4? $link=~s/(@^lt;fоnt)/$1 style="..."/g; $link=~s/(@^lt;a href=[^\s]+)/$1 class="..."/g; :)
ц и т а т а
|
|
|