На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » Сайтостроительство » Web-программирование

Технологии чата – новые возможности

Долго, очень долго приходится искать в сети достаточно хороший чат. Вы можете поспорить с таким утверждением, и в чем-то конечно окажетесь правы, так как чатами Интернет буквально переполнен. И найти себе по вкусу место общения можно легко и быстро. Но! Если Вы захотите завести такое место у себя на собственном сайте, Вам придется согласиться со мной – нелегко найти в сети достаточно хороший чат.

После того, как свет увидела статья «Технологии чата», мне пришло немало писем. Очень во многих – просьба более подробно остановиться на некоторых моментах, которые не попали в статью. Например, часто встречается вопрос об возможности функционирования персональных комнат (так называемый приват) в чате. Этим вопросом мы сейчас и займемся поближе.

Вступление в тему

Для начала, давайте сформулируем задачи и цели, а так же обговорим необходимые условия для их достижения. Нам надо на базе готового чата создать максимально защищенное пространство для переписки между двумя индивидуумами. Как непременное условие – уже готовый чат с возможностью регистрации и парольного входа. То есть - ники в чате должны быть закреплены персонально, иначе теряется смысл привата. Еще нам понадобится знание того языка программирования, на котором сделан Ваш чат. Если Вы смогли сделать его сами, это будет большим плюсом (тут имеет смысл отослать Вас к статье «Технологии чата»). Если Вы воспользовались чем-то бесплатным из Интернета, придется для начала полностью разобраться с работой чужой программы. Чаще всего это сложнее, чем написать свою собственную. Сам язык программирования практически не играет никакой роли, так как я буду рассматривать только теоретические аспекты проблемы. А переложить все это на код будет уже не трудно. Для примеров я буду использовать язык РНР, как наиболее простой и доступный. Не настаиваю на законченности и достоверности моих суждений – все описанное тут есть мои собственные изыскания по теме, и я допускаю что существуют другие способы и алгоритмы реализации приватов в чате. Так же не берусь утверждать, что предлагаемое решение является идеальным. Помните, что все, что сделано одним человеком, может быть исследовано и переделано (взломано) другим :-)

Первые мысли

Но, так или иначе со вступлением покончено, и мы можем перейти к делу. Первое, что приходит на ум для решения поставленной задачи – это сделать с десяток простых чатов и использовать их под приваты, разрешив вход по паролю. Это самый простой, но и самый неверный путь. Если у Вас всего несколько посетителей одновременно в чате, то такой подход еще может быть оправдан, но если все Ваши приваты вдруг окажутся занятыми, а кто-то захочет еще… И увеличение количества готовых чатов не выход, так как всегда есть способ лучше. На самом деле, все гораздо элегантней. Незачем плодить чаты, достаточно сделать один, но работать он будет не с фиксированным файлом (куда пишутся сообщения, вводимые в чат), как происходит при работе обычного чата, а с динамическим. Точнее, файлы будут создаваться по мере надобности и таким образом снимается лимит на количество одновременно функционирующих приватов.

В первую очередь нужно подумать о том, что именно будет служить именем для файла сообщений в привате. Неплохой вариант – комбинация ника и пароля. Только не прямая, конечно, комбинация, а как-либо зашифрованная. Еще вариант – генерация уникального имени в каталоге. Такую возможность предоставляют многие языки программирования (например, РНР конечно). Если нет такой возможности – можно генерировать случайное число и использовать его для имени файла. Только… Эти способы не дают абсолютной гарантии уникальности. А имя файла для привата должно быть обязательно уникальным.

Ну конечно, у меня есть для Вас готовое решение :-) Способ генерации уникального имени до безобразия прост. Нужно использовать функцию времени, прошедшего с начала эпохи UNIX…

О времени UNIX

Давным-давно, когда компьютеры еще были очень большими, а программы очень маленькими, появилась необходимость отсчитывать время. Так или иначе, но у программистов прижился метод отсчета времени UNIX. Начинает свой отсчет это время с 1 января 1970 года. Первая секунда этой даты считается первой, вторая – второй и т.д. На сегодня набежало уже достаточно большое число, но это не страшно для нас, так как вручную считать нам не приходится. Важно, что время UNIX есть количество секунд (кстати, не только секунд – ведется подсчет и миллисекунд), прошедшее с 1 января 1970 года.

Вот это количество секунд служит идеальным генератором случайных имен файлов для персональных комнат в чате. Главное в нем – это уникальность имени. А сформировать такое имя очень просто – достаточно считать (для этого во всех современных языках программирования есть специальные функции) показания секундомера UNIX, и склеить полученное значение со строкой, включающей в себя точку и расширение, которое Вы хотите видеть у файла с сообщениями привата.

Кстати, к расширению стоит отнестись ответственно. Проще всего выбрать его, конечно, стандартным ( .txt , например…), но я бы рекомендовал использовать дополнительные возможности, которые дает нам сервер при использовании динамических страниц. Как правило, сервер не позволяет извне просматривать код некоторых файлов, и их расширения нам никто не запрещает использовать в своих целя. Для примера я опять же воспользуюсь примером РНР.

О расширениях в РНР

Для того, чтобы сервер узнал, есть в файле код РНР или нет, изменяют расширение файла. Если обычно используется расширение .htm или .html, то в РНР Вы должны будете использовать несколько другие – например: .phtml, .php, .php3 или другие, в зависимости от настроек сервера. Так или иначе, но файл с расширением РНР уже не будет доступен в том виде, в котором он существует на сервере. Любой код РНР будет скрыт, а в браузер пойдет только результат работы скрипта-программы. Если только… этот результат есть. Например, в коде РНР очень удобно прятать комментарии к коду HTML. Клиенту такой комментарий не передается, а самому понятно что, где и как. Так вот, если весь файл РНР состоит из одного комментария, браузер посетителя так ничего и не получит.

Вот такое место удобно использовать для сокрытия информации. Для этого обзовем наш файл расширением РНР, а в его первой строке откроем комментарий (в РНР это будет выглядеть так: