Perl - специальный справочник


           

Chat room» выглядит так, как


Написанное мною приложение « Chat room» выглядит так, как показано на рис. 21.1. Как видите, пользователь вводит свое имя и комментарии по ходу беседы на Web-странице. После нажатия на кнопку Send text напечатанный им текст отправляется сценарию и появляется вместе с именем пользователя в окнах броузеров всех подключившихся к обсуждению пользователей.



Рис. 21.1. Пример многопользовательской беседы

Все, что нужно для подключения к разговору, — это Web-броузер, способный работать с метакомандой обновления. Впрочем, это поддерживают практически все современные программы просмотра. Все, что пользователь должен сделать, — это открыть Web-страницу chat.htm. Броузер и мое приложение «Chat room» сделают все остальное (см. рис. 21.1).

Проблемы защиты в системе со многими пользователями

Следует обсудить еще несколько проблем — что если кто-то начнет вводить в качестве комментария код HTML? Этот сценарий обрабатывает HTML, введенный как в поле комментария, так и в поле имени, заменяя символы < на &lt. Благодаря этому приему, вместо того чтобы интерпретироваться как метки HTML, они появляются в окне броузера в виде символов "<".

Также, поскольку многие пользователи пытаются получить доступ к файлу одновременно, во избежание конфликтов на время чтения или записи, сценарий блокирует файл функцией flock. Выбран вариант монопольной блокировки (в отличие от разделяемой блокировки), даже на чтение, поскольку он оказался наиболее живучим в различных системах (как показала практика, некоторые из них просто не поддерживают разделяемую блокировку). Если flock задает монопольную блокировку, ни одна другая программа не сможет использовать файл до тех пор, пока он не будет разблокирован. Это не означает, что остальные программы не смогут использовать его (в Unix, например, смогут), — это просто обозначает, что они не смогут получить от функции flock значение истина. Этот сценарий использует flock для координации доступа к файлу многих пользователей, перед началом работы с файлом ожидая, пока flock не вернет значение истина.


Содержание  Назад  Вперед