Виртуальный Брест
Главная Портал Форум Рассылки Контакт Для клиентов Статьи

Экскурсии в Европу, из Бреста!
Экскурсии в Европу, из Бреста!
 
Баня открыта и ждет посетителей!
Баня открыта и ждет посетителей!
 
 

Виртуальный хостинг - дом для вашего сайта - лучшее предложение в Бресте!


Полный список глав книги

Технологии чата - окончание


http://myhost.by/index.phtml?temp=1&qwe=slovo

 Как видите, передаются и цифры и символы, причем передать можно несколько переменных за один раз. В результате обработки такой ссылки программа в index.phtml получит две переменные - $temp и $qwe с соответствующими значениями.

Передавать таким методом учетные записи незашифрованными нельзя, да это и не требуется. Я говорил о специальном цифровом идентификаторе введенного пароля. На основе его, ника пользователя и любой другой произвольной переменной можно построить еще один цифровой идентификатор, который уже можно передавать открыто методом GET через загрузчик фреймов. Расшифровать такой идентификатор невозможно, так как не известны методы, которыми он строился.

Для усиления криптостойкости и вводится дополнительная строка. А можно скомбинировать сочетание идентификатора пароля, ника и дополнительной строки так, как угодно. Это дает возможность построить разные системы шифрования. В любом случае – методика шифровки должна быть недоступной всем желающим.

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

Первое у нас уже есть, так как оно передается из загрузчика методом GET, остальное – считывается из базы данных о пользователях. Итак, шифруем все подряд учетные записи точно тем же методом, что шифровался идентификатор пароля, ник и дополнительная строка. Полученный результат сравнивается с переданным идентификатором пользователя, если они не совпадают – сверяем следующую учетную запись в базе, если совпадают – пользователь авторизован повторно. Если перебор окончен, а учетная запись не найдена – введен неверный пароль.

Это кажется немного сложно, но зато дает гарантию на правильную авторизацию и защиту от входов под любым выбранным ником.

Конечно, я не настаиваю на абсолютности описанной защиты. Я глубоко убежден, что все, что сделал один человек, второй может переделать и исследовать. Но! Большой вопрос – стоит ли тратить свои усилия и знания на такой пустяк.

Описанная методика защиты не очень сложна, но накладывает некоторые ограничения на сервер. Если учетных записей достаточно много, нагрузка будет довольно большая. Можно пойти более легким путем – авторизовывать пользователя по идентификатору не каждый раз, а только один, в самом начале. Дальше можно передавать более простой идентификатор методом POST (например, номер учетной записи в базе данных). Только это дает взломщику еще одну дырку в Вашем чате, а это не желательно.

С авторизацией покончено, пришла пора поговорить о работе чата как о едином механизме. С теми фреймами, которые отвечают за вывод информации все более-менее понятно. А вот окно, где выводятся сообщения, стоит рассмотреть подробнее. Средства HTML позволяют специальными методами заставить окно браузера периодически обновлять свое содержимое. Это не очень приятно на обычных страницах, но совершенно необходимо в чате.

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

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

Это снимает часть проблем по загрузке сервера, так как происходит отправка сообщения в чат не так уж часто. И если пользователь не авторизован, ввод сообщения становится недоступен. Он блокируется с выводом на экран предупреждающего сообщения.

Самое сложное – применить технологию, с помощью которой можно всегда знать, кто находится в данный момент в чате. Если отказаться от этого сервиса, все значительно упрощается, и чат очень слабо будет загружать сервер. Но ведь это не интересно, так что этот вариант мы пропустим, и перейдем к следующему, самому сложному по части программирования фрейму. В нем можно увидеть, кто и сколько времени присутствует в чате. Для реализации данной возможности нам придется и тут авторизовать посетителя по уникальному идентификатору, и мало того, делать это с определенной периодичностью. Ведь нужно проверять, а не появился ли в чате кто-то новенький и не покинул ли чат кто-то из присутствующих. Чем чаще такие проверки, тем больше нагрузка на сервер. Но вот тут-то можно ограничиться единоразовой авторизацией, а дальше передавать простой идентификатор по методу GET. Его хоть и можно подделать, зато сказать в чате ничего не даст программа из предыдущего фрейма. Ведь там будет реализована полноценная проверка данных.

Как правило, обновления можно делать раз в 15-20 секунд, а можно добавить специальную кнопочку или ссылку, нажав на которую пользователь обновит окно с никами присутствующих в чате. Их, конечно, надо как-то учитывать.

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

В любом случае можно считать посетителя ушедшим и его данные стираются из файла данных о присутствующих в чате. Таким образом, эти фреймы всех пользователей обновляют свое собственное контрольное время, что бы ни быть удаленным кем-то другим, и удаляют всех, чье контрольное время превысило установленный максимум.

Дальше просто – надо только вывести на экран список из ников, которые остались в файле. Это и есть список пользователей, присутствующих в чате в режиме on-line.

Вот и все технологии. Точнее, конечно, не все. За бортом остались такие вещи как персональные комнаты, отправка сообщений на ICQ и многое другое. Но это – признаки профессиональных чатов. А если Вы хотите себе именно такой, Вам придется воспользоваться платными программами. Или даже целыми наборами программ. Но если Вы хотите получить удовольствие от собственной разработки, если Вам достаточно простого и не навороченного чата на собственном сайте, Вы можете воспользоваться теми наработками, что описаны в данном разделе.

Еще раз повторюсь – я не претендую на полноту и законченность своих суждений. Моя цель – побудить Вас провести собственное исследование в области построения чатов. Я намеренно не приводил тут никаких кодов, что бы не вызвать копирования. Думайте, придумывайте, изменяйте, творите.

Читать еще...



Дино Эспозито

Программирование с использованием Microsoft ASP.NET 4
Эта книга представляет собой наиболее полное руководство по Microsoft ASP.NET, полностью переработанное под версию ASP.NET 4. Вы узнаете обо всех возможностях данной технологии, в...

Джеффри Рихтер

CLR via C#. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#
Эта книга, выходящая в третьем издании и уже ставшая классическим учебником по программированию, подробно описывает внутреннее устройство и функционирование общеязыковой...

Марк Лутц

Программирование на Python. Том 1
Монументальный труд Марка Лутца «Программирование на Python» в 2-х томах представляет собой учебник по применению языка Python для решения наиболее типичных задач в...

Мэтт Зандстра

PHP: объекты, шаблоны и методики программирования
Создайте высокопрофессиональный код на PHP, изучив объектно-ориентированные средства, шаблоны проектирования и важные средства разработки!За последние несколько лет PHP буквально...

    Информация

Главная - переход на начало
Тарифы на Российский хостинг
Правила - что можно а что нет
Заказ - сделайте это сейчас
Выбор домена - найди свое имя
Регистрация домена - купить
Оплата - варианты для всех
Панель управления Россия
Панель управления Беларусь
Вопросы и ответы - информация
Разработка сайтов - сопровождение
Виртуальный Брест - портал
Контакт - обратная связь
Наш форум - пообщаемся?

Список доменов
в которых доступна бесплатная регистрация имен при покупке хостинга, а так же открытие поч- тового ящика:

Новости Бреста:

Второй порыв теплосетей в Бресте - двенадцать многоэтажных домов и один детский сад остались без тепла
Почти тонну мёда задержали налоговики при проверке в Бресте
Зарплата в конвертах в Бресте - видео
Трое жителей Кавказа в "поисках работы" забрались прямо в лес в пограничную зону
Профилактика квартирных краж - важно
Современный животноводческий комплекс на 1500 голов строится в СПК "Королевский" Кобринского района - фото
Результаты проходящей на территории Брестской области акции "Не упусти свой шанс"
Осенний месячник по наведению порядка на земле проходит на Брестчине - важно
В Лунинецком районе в водоеме нашли автомобиль с телом внутри
ГАИ: брестчанин решил стать маршрутчиком и в пьяном состоянии вез горожан

© Виртуальный Брест 2001 - 2009 Автор проекта: Андрей Кухарчик Дизайн: Partgraphic