—»     —»   Chat2: Чат, разработанный при помощи PHP, jQuery и текстового файла
  Раздел: Чаты   Комментариев: 1  

Chat2: Чат, разработанный при помощи PHP, jQuery и текстового файла



Это дополнение к прежней статье о разработке чатов, которую мы публиковали ранее. В некотором роде, технология остается та же. Мы применим PHP для связи с сервером, jQuery – для поддержания работы чата, а сами разговоры будут храниться в текстовых файлах, так же как и в первой версии.

Chat2: Чат, разработанный при помощи PHP, jQuery и текстового файла

Изменения коснулись некоторых новых функций:

* Имена пользователей являются уникальными для тех пользователей, которые на данный момент общаются в чате
* Теперь вы можете посмотреть список пользователей, которые на данный момент находятся в чате
* В чате теперь несколько комнат

Немного о MySQL

Хоть и первая версия чата вообще не использовала баз данных, в этой версии мы собираемся воспользоваться MySQL. В приложенном архиве есть файл под названием Setup.sql. Он используется для построения первоначальной базы данных. MySQL, собственно, используется не для самого чата, а для двух других функций, связанных с ним:

* Прослеживание активных пользователей
* Комнаты

Когда кто-то заходит в чат, он выбирает имя пользователя. С помощью библиотеки jQuery мы делаем AJAX-запрос с целью определения, используется ли это имя в базе данных чата. Если оно занято, вы получите предупреждение:

Chat2: Чат, разработанный при помощи PHP, jQuery и текстового файла

В противном случае, система оповестит пользователя, что все в порядке:

Chat2: Чат, разработанный при помощи PHP, jQuery и текстового файла

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

Добавление / Изменение/ Удаление комнат

Названия комнат хранятся в базе данных. Чтобы добавить новую комнату, просто добавьте в базе данных новый ряд и название того текстового файла, где вы планируете хранить этот чат:

Chat2: Чат, разработанный при помощи PHP, jQuery и текстового файла

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

jQuery

Мы уверены, вы заметили, что мы до сих пор не показали ни одного кода. Мы это сделали специально. Весь код доступен в приложенных файлах (см. ниже). Его не так много, как кажется, но мы считаем, что для стандартного письменного руководства/обзора это все-таки многовато. Вместо чтения кода, давайте лучше посмотрим, за что он отвечает:

Проверка имени пользователя: Когда вы выбираете имя пользователя на главной странице чата, jQuery отслеживает ввод текста. Когда вы набираете символ (в момент нажатия клавиши), она запрашивает у определенного файла PHP (через AJAX), используется ли это имя. Файл PHP отвечает «да» или «нет», и на мониторе появляется соответствующее сообщение.

Окно сообщений: Когда пользователь печатает в поле ввода текста свое сообщение, jQuery отслеживает это поле и проверяет, чтобы в тексте было определенное количество символов (этот параметр настраивается с помощью атрибута «maxlength» тэга «textarea»)

Отсылка сообщений: Когда пользователь в окне сообщений нажимает клавишу return/enter (возврат/ввод), ее значение отсылается на обработку. PHP записывает текст в соответствующий текстовый файл.

Обновление чата: Каждые несколько секунд jQuery запрашивает PHP файл на предмет проверки текстового файла чата – не появилось ли там новых строк. Если новые строки есть, они отображаются в окне чата.

Функции, которых нет у этого чата

* Вы не можете «выбрасывать/кикать» людей из чата
* Он не воспринимает спецсимволы

Вы хотите добавить эти функции? Нам бы это понравилось, и тогда мы обновим эту версию.

Скачать файлы и демо-версию

Загрузка файлов

НЕКОТОРЫЕ ИСПОЛЬЗОВАЛИ ДЕМО-ФАЙЛ – мы, конечно, знали, что некоторые люди могут быть глупыми, и ожидали этого. Но, как оказалось, у одной из функций демо возникла проблема с БЕЗОПАСНОСТЬЮ, и, благодаря ей, открывается доступ к любому файлу на сервере. Один из читателей показал мне, как он спокойно получает доступ к моему файлу WordPress - wp-config.php. А он, конечно, супер чувствителен. Уязвимость находится в файле update.php, который принимает параметры «состояние» и «файл». При прямом доступе и при наличии соответствующего пути к файлу, вы можете зайти по нему в защищенные файлы. Когда мы это исправим, то обновим загрузочные коды.

Благодарности

Особая благодарность Кенрику Бекетту, который разработал исходный код, и Джейсону Ленгсторфу за отслеживание различных багов относительно безопасности.

На будущее

Вот предложения, которые мы получили от людей или которые мы сами считаем хорошей идеей:

* Исправить проблему с безопасностью, описанную выше
* Контроль флуда в чате (ограничения вроде: вы можете публиковать только одно сообщение за 5 секунд)
* Ссылка (кнопка) выхода (удаление PHP сессии)
* Разрешать использование HTML, но только определенных тэгов (разработать «белый список»). Например, разрешить "a href=''", но запрещать javascript. Возможно, добавить несколько кнопок для HTML (WYSIWYG?). Подсветка кода в чате, заключенного в тэг «code».
* Разрешить регистрацию постоянного имени пользователя (со всеми вытекающими, например «Забыли пароль?»)
* Защита от несуществующих имен комнат в чате, например, /Chat2/room/?name=LOL
* Поддержка специальных символов (UTF-8)
* Введение сервиса приватных сообщений (@) (только тот человек, к которому обращаются с определенного имени пользователя, увидит его)
* Включение возможности «выкидывать»/банить пользователей по IP (функция только для администратора, либо же просто помещать IP-адреса в «черный список»)
* Больше смайликов
* Сделать саму кнопку отсылки сообщения (для мобильных устройств, которые поддерживают javascript, но не имеют привычных для компьютера клавиш)
* Автоматический фильтр ненормативной лексики
* Использование наружной системы авторизации, например, Twitter oAuth, Google Login или Facebook Connect
* Ввести имена пользователей в виде их email, а затем использовать Gravatars
* Запретить ссылки с доменами из 4 букв (например, .info)
* Долговременный опрос вместо запроса каждые несколько секунд
Обнаружили ошибку или мёртвую ссылку?
Выделите проблемный фрагмент мышкой и нажмите CTRL+ENTER.
В появившемся окне опишите проблему и отправьте уведомление Администрации ресурса.
Нужна органическая вечная ссылка из данной статьи? Постовой?
Подробности здесь
Вам понравился материал? Поблагодарить легко!
Будем весьма признательны, если поделитесь этой статьей в социальных сетях:

Ключевые тэги: общение онлайн
Опубликовал Mysterious Master   Прочитано (раз): 9696   |   Оставлено комментариев: 1
Источник материала / оригинал статьи   Распечатать
Другие статьи и новости по теме:
Комментарий #1: 18 марта 2011 @ 11:11
Написал: Ярик — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
добрый день:) вот подскажите мне на маил плз что мне делать!... вот мой друг создал чат но там есть ошибки! извините если пишу не понятно я просто в этом не шарю!... итак начнем: в чате в городе нельзя недвижимость добавлять машины и т.п. реквизиты не работают и обновления не пашут!... посмотрите плз сайт сами вот адрес small точка uuu точка su напишите плз че делать! и как! там мой ник ~СуСлИк~СцУкО~ заранее большое спасибо!
Добавление комментария
Уважаемые пользователи!
При добавлении комментариев на сайт Вам следует учитывать следующее - все комментарии проверяются Администрацией на предмет отсутствия спама. При обнаружении признаков спама, в оставленном Вами комментарии, сам комментарий будет незамедлительно удалён, а Ваш IP-адрес будет забанен без предупреждения! Учётные записи пользователей, рассылающих спам, блокируются/удаляются без права последующего восстановления.

С уважением, Администрация сайта.
* = поля обязательны к заполнению
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Вопрос : Назовите месяц February по-русски
Подтверждение кода безопасности :

Включите эту картинку для отображения кода безопасности
обновить, если не виден код


Популярные публикации


















Свежие шаблоны сайтов каждый день
С миру по нитке
«    Ноябрь 2017    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
27282930