В интернете существует много сервисов,
предоставляющих бесплатные чаты, многие из
которых имеют ограничения, для снятие
которых нужно выкладывать некую сумму. Нас
не интересуют подобные сервисы, мы хотим
создать нечто своё, где не будет никакой
навязчивой рекламы и т.д.
Для создания чата нам нужно определиться
с языком написания чата. Чат можно сделать
на PHP, ASP, но мы, как ясно из заголовка будем
использовать Perl, который очень хорошо
подходит для написания как простых, так и
продвинутых чатов.
В этой статье я расскажу как создать
обыкновенный чат на Perl, который в
последствии можно довести "до ума".
Для начала создадим фреймовую структуру
чата. В вверху будет находится фрейм с
логотипом чата или какой-нибудь
информацией. Среднюю часть страницы
поделим на две части: в одной будут
появляться сообщения, в другой будут
располагаться новости чата. В нижней части
окна будет расположена форма для введения
ника, а после поле для ввода сообщения. Вот
что у нас получилось:
<html>
<head>;
<title>Чат</title>
</head>
<frameset rows=\"15%,*,12%\" border=1>
<frame name='top' scrolling='no' noresize target='namechat' src='../title.htm'>
<frameset cols="67%,*" border=0>\n";
<frame name="chat" noresize src="left.cgi">
<frame name='news' src='../news.htm' scrolling='auto'></frameset>
<frame name="message" scrolling='no' src="../nik.htm">
<noframes>
<body>
К сожалению, ваш браузер не поддерживает фреймы, необходимые для общения.
</body></noframes>
</frameset>
</html>
Информация из nik.htm передаётся скрипту
down.cgi, для её преобразования в скалярную
переменную $login со значением ника
пользователя нужно распознать метод
передачи данных (в нашем случае это Post) и
декодировать данные:
sub urldecode{
local($val)=@_;
$val=~s/\+/ /g;
$val=~s/%([0-9A-H]{2})/pack('C',hex($1))/ge;
return $val;
}
# Декодировали данные и занесли значение
ника в скалярную переменную $login.
Для того, чтобы появлялись сообщения о
выходе пользователя через некоторое время,
когда он просто закрыл окно с чатом нам
нужно занести информацию о пользователе с
последним временем обращения к чату (обновления
окна). Мы будем использовать в чате два
файла log.txt в котором содержится информация
о присутствующих в чате и chat.txt с
сообщениями пользователей:
Заносим данные о пользователе в log.txt и
извещаем всех посетителей в чате, что у них
пополнения, занося в chat.txt строчку об этом и
помечая, что эта строчка служебная (..||slug||..).
Вот у нас получился простой чат, который
можно доделать, добавить функций и т.д.
Можете посмотреть пример, который имеет
больше функций, чем этот чат, но основан на
этом простом чате - smok.h1.ru.
Он правда на данный момент написания этой
статьи не доделан, но возможно когда вы
будете читать эти строки он уже будет
функционировать полностью. Если есть какие-то
вопросы касательно скрипта чата и скриптов
вообще просьба писать мне на cybernik@bk.ru
или отправив сообщение с формы на сайте http://ufoxfiles.h1.ru/.