Чат для сайта php mysql

Чат для сайта php mysql

Разделим код проекта на несколько частей: база данных, серверная и клиентская.

Клиентская часть

Клиентский интерфейс взимодействия

Скрипт работы на стороне клиента на JQuery/JavaScript

База данных

В этой таблице у нас будут храниться сообщения чата:

  • id – номер сообщения, он должен быть помечен как AUTO_INCREMENT для того что бы для каждого сообщения создавался уникальный индекс
  • name – имя пользователя отправившего сообщение
  • text – само сообщение

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

В данном уроке из двух частей мы создадим AJAX веб чат с использованием PHP, MySQL и jQuery. В первой части урока мы обсудим использование PHP и MySQL, а в следующей — клиентскую часть jQuery и CSS.

Как обычно первый шаг посвящен разметке HTML. Наш документ строится в соответствии с HTML5, что позволяет использовать новый, более короткий синтаксис DOCTYPE, и опускать атрибут type в тегах script.

index.html

Для оптимизации загрузки, стили включены в секции head, а файлы JavaScript подключаются внизу документа, перед закрывающим тегом body.

Для организации прокручиваемой области со строками чата мы используем плагин jScrollPane. Данный плагин имеет свои собственные стили, который включаются в секции head.

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

Затем мы включаем файлы JavaScript: библиотеку jQuery, плагин mousewheel (используется в jScrollPane), плагин jScrollPane и наш файл script.js.

Схема базы данных

Прежде чем перейти к части PHP, нужно сначала взглянуть на организацию данных чата в базе данных MySQL.

Для нашего скрипта мы используем две таблицы. В таблице webchat_users хранится информация об участниках чата. Таблица имеет поля id, name, gravatar и last_activity. Поле name определено как уникальное, таким образом предотвращается использование дублирующихся имен в чате.

Другим полезным свойством поля с уникальным индексом является то, что запрос на вставку данных завершится с ошибкой и свойство inserted_rows объекта MySQLi будет установлено в значение 0, если попытаться вставить дублирующиеся строки. В классе PHP Chat данное свойство будет активно использоваться.

Поле last_activity содержит значение времени. Значение обновляется каждые 15 секунд для каждого пользователя. Поле также определено как индекс, что позволяет быстро удалять неактивных пользователей (значение в поле last_activity более 15 означает, что пользователь более не просматривает окно чата).

Таблица webchat_lines содержит записи в чате. Заметьте, что мы храним имя автора и gravatar здесь тоже. Такое дублирование позволяет нам отказаться от использования затратной директивы join при запросе последних записей – наиболее часто используемых в нашем приложении.

Определения таблиц имеются в файле tables.sql в исходниках. Вы можете использовать текст запросов для создания таблиц. Также, при установке чата на свой хост, нужно поменять установки в ajax.php на ваши данные для соединения с базой MySQL.

Теперь у нас есть база данных, давайте обсудим скрипт PHP, который управляет чатом.

Первый файл, который мы рассмотрим, ajax.php. Он обрабатывает запросы AJAX от клиентской части из jQuery и выводит данные в формате JSON.

Читайте также:  График выхода игр ios

ajax.php

Для удобства используется оператор switch для определения действий, которые обрабатывает скрипт. Здесь реализованы подсистемы чата, функциональность входа/выхода и действия по запросу списка реплик и пользователей в режиме онлайн.

Вывод осуществляется в форме сообщений JSON (которые удобно обрабатывать с помощью jQuery), ошибки генерируют исключения. Оператор switch распределяет все запросы соответствующим статическим методам класса Chat, который будет обсуждаться позже в данном разделе.

DB.class.php

Класс DB — менеджер базы данных. Конструктор объявлен как private, таким образом, объект не может быть создан вне пределов класса, и инициализация возможна только из статического метода init(). Он берет массив с параметрами соединения с MySQL и создает экземпляр класса, который содержится в статической переменной self::$instance. Таким образом, обеспечивается существование единственного соединения с базой данных в конкретный момент времени.

Остальная часть класса реализует коммуникацию с базой данных, в основе которой лежит статический метод query().

ChatBase.class.php

Это простой базовый класс. Его основное назначение — определить конструктор, который получает массив параметров, но сохраняет только те, которые определены в классе.

ChatLine.class.php

Класс ChatLine является производным классом от ChatBase. Объект данного класса может быть легко создан с помощью передачи конструктору массива с текстом, именем автора и элементом gravatar. Свойство класса gravatar содержит хэш md5 email адреса. Оно нужно для получения пользовательского аватара, соответствующего email адресу, с сайта gravatar.com.

Данный класс также определяет метод save, который сохраняет объект в базе данных. Так как метод возвращает объект MySQLi, содержащийся в классе DB, вы можете проверить успешность завершения операции с помощью свойства affected_rows.

ChatUser.class.php

Класс имеет свойства name и gravatar (обратите внимание на модификатор доступа protected – свойства доступны в классе ChatBase, и мы можем устанавливать их значения в конструкторе).

В классе определен метод update(), который обновляет поле last_activity значением текущего времени. Таким образом показывается, что пользователь держит окно с чатом отрытым и его надо учитывать как автора в режиме онлайн.

Chat.class.php – Часть 1

Этот код выполняет всю работу. В операторе switch в файле ajax.php выбирались действия, которые соответствовали методам данного класса. Каждый из этих методов возвращает массив, который затем конвертируется в объект JSON с помощью функции json_encode() (это происходит внизу в файле ajax.php).

Когда пользователь входит в систему, его имя и gravatar сохраняются как элементы массива $_SESSION и становятся доступны в последующих запросах.

Chat.class.php – Часть 2

jQuery отправляет запросы getUsers() каждые 15 секунд. Мы используем данный факт, чтобы удалить реплики, которые старше 5 минут и неактивных пользователей из базы данных. Потенциально можно было бы удалять данные записи в getChats, но этот запрос поступает каждую секунду и дополнительная нагрузка может повлиять на производительность приложения.

В методе getChats() используется функция gmdate вывода времени в формате GMT. В клиентской части мы используем значения часов и минут для установки в объекте JavaScript, а в результате время отображается в соответствии с часовым поясом пользователя.

Продолжение во второй части!

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: tutorialzine.com/2010/10/ajax-web-chat-php-mysql/
Перевел: Сергей Фастунов
Урок создан: 3 Ноября 2010
Просмотров: 131344
Правила перепечатки

5 последних уроков рубрики "PHP"

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза "фильтруйте всё, экранируйте всё" всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Читайте также:  Ошибка bluescreen windows 7 код 1049

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

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

Скрипты для организации чатов, с которыми мы хотим вас познакомить, можно легко встроить в Ваш сайт, что позволит поднять на новую высоту уровень общения посетителей сайта между собой и с онлайн консультантом корпоративного сайта или интернет-магазина. Сразу оговоримся — все собранные здесь скрипты относятся к классу премиум, т.е. не бесплатны. Однако их стоимость находится во вполне разумных пределах, и не окажет заметного влияния на Ваш бюджет. Вскоре мы опубликуем подборку с бесплатными скриптами для создания чата. Подписывайтесь на нас в социальных сетях или на RSS, чтобы не пропустить пост.

PHP Flat Visual Chat

Этот уникальный чат для организации онлайн консультанта, помимо своего основного назначения, может служить своеобразным гидом по Вашему сайту. В процессе общения Вы можете визуально выделить тот или иной элемент на странице сайта и показать его пользователю. Этот автономный продукт имеет собственную независимую панель для управления аккаунтами операторов.
Стоимость: $16

  • Пример
  • Скачать

ShoutCloud

ShouldCloud — гибкий и обладающий богатыми возможностями PHP/AJAX чат, который исключительно легко интегрируется в сайт в течение нескольких минут. Он не требует MySQL базы данных, а нужные для работы файлы создает автоматически. Графический интерфейс автоматически адаптируется под размеры контейнера, в котором размещается чат.
Стоимость: $8

  • Скачать

Chat Plus Pro

Chat Plus PRO — мощный PHP/AJAX скрипт для чата с адаптивным интерфейсом. С этим замечательным продуктом Ваши посетители проведут не одну бессонную ночь в неторопливых беседах. В сообщениях допускается использовать изображения, ссылки на видео в youtube или другие сайты. Поддерживаются профайлы пользователей, в которые они могут помещать различную личную информацию. Возможно создание отдельных «комнат» по интересам и размещение их на разных сайтах.
Стоимость: $24

  • Пример
  • Скачать

Social Meet Script

Social Meet Script выполнен в так называемом tinder-стиле — приложения для поиска знакомств и общения. Открыв чат Вы сможете выбрать понравившегося Вам пользователя и, если он ответит Вам взаимностью, начать общение. Social Meet Script имеет встроенный чат, систему геолокации, а также VIP-членство.
Стоимость: $23

  • Пример
  • Скачать
Читайте также:  Как вывести скины в стим

PHP Chat with Web

ClientEngage Visitor Chat — скрипт онлайн консультанта с широкими возможностями настройки. Простой и удобный интерфейс администратора. Примечательной особенностью этого чата является наличие Windows-клиента — Вы сможете видеть приходящие сообщения в области уведомлений на Рабочем столе и общаться с клиентами непосредственно из Windows, даже не заходя в административную панель сайта.
Стоимость: $32

  • Пример
  • Скачать

Quick PHP Chat

Quick PHP Chat — легкий в использовании скрипт для организации чата на Вашем сайте. Имеет 10 встроенных цветовых схем, позволяющих настроить внешний вид в соответствии с цветовой гаммой Вашего сайта. Административные функции позволяют управлять аккаунтами пользователей, в частности «банить» отдельных пользователей, а также сообщать им причину «бана».
Стоимость: $7

  • Пример
  • Скачать

PHP Support Center and Live Chat

PHP Support Center — система управления техподдержкой в минималистическом стиле. Ориентирован на организацию службы техподдержки, позволяет закреплять операторов и администраторов за отдельными компаниями, заказчиками, отделами и пользователями. Существует возможность использования редактора шаблонов mailchip для придания Вашим спискам рассылки уникального вида.
Стоимость: $32

  • Пример
  • Скачать

PHP Live Support Chat

PHP Live Chat — автономное приложение онлайн консультанта, которое может быть встроено в любой сайт. В отличие от сервисов, предоставляющих услуги чата, Вы получаете полную свободу в его использовании. Никаких абонплат — заплатили один раз и пользуетесь сколько угодно!
Стоимость: $19

  • Пример
  • Скачать

Boom Chat

Boomchat имеет дружелюбный пользовательский интерфейс и ряд уникальных особенностей. Полностью адаптивный интерфейс обеспечивает удобство использования на любых устройствах, будь то компьютер, планшет или смартфон.
Стоимость: $18

  • Пример
  • Скачать

ChatIgniter

ChatIgniter — приложение, построенное на одноименном фреймворке. Использует jQuery и базу данных MySQL. Пользователи получают в свое распоряжение сервис мгновенного обмена сообщениями, похожий на Facebook, а использование технологии AJAX избавляет от необходимости перегружать страницу для просмотра сообщения.
Стоимость: 9$

  • Скачать

ReadyChat

Новый продукт от разработчика DesignSkate. Значительно усовершенствованный по сравнению с предыдущей разработкой «moChat»: более оптимизированный и приятный на вид как для пользователя, так и для администратора.
Стоимость: $15

  • Пример
  • Скачать

Simple Chat Script

Простой и легкий SimpleChat можно интегрировать в любую php-страницу. Имеет админпанель для управления сообщениями. Внешний вид можно идеально адаптировать под стиль Вашего сайта при помощи CSS. Вся информация хранится в текстовом файле, так что отпадает необходимость в использовании базы данных.
Стоимость: $4

  • Скачать

Square Live Chat

Square Live Chat можно использовать как средство группового общения, систему для организации технической поддержки, а также других целей. История сообщений хранится в обычном текстовом файле и не требует базы данных или отдельного серверного сокета. Имеет мультиязычный интерфейс и возможность настройки внешнего вида.
Стоимость: $14

  • Скачать

Live Chat

Live Chat написан с использованием фреймворка CodeIgniter и предназначен для организации чата в реальном времени между посетителями сайта и операторами (онлайн консультантами). Обладает большим набором различных особенностей и дружественным отношением со стороны разработчиков.
Стоимость: $16

  • Пример
  • Скачать

Owl Chat

Owl Chat — мощный PHP/AJAX скрипт для чата с адаптивным интерфейсом. Имеет привлекательный внешний вид, позволяет обмениваться изображениями, ссылками на youtube, личными сообщениями. Поддерживаются профайлы, в которых пользователи могут размещать информацию о себе.
Стоимость: $17

  • Пример
  • Скачать
Ссылка на основную публикацию
Часы с функцией диктофона
Классические часы с секундной стрелкой; Цифровые часы (поддержка 12/24ч форматов, для смены формата сделайте двойной тап по цифрам); Диктофон (поддержка...
Формула vlookup на русском
Функция ВПР в Excel позволяет данные из одной таблицы переставить в соответствующие ячейки второй. Ее английское наименование – VLOOKUP. Очень...
Формула в эксель вычитаем проценты
В различных видах деятельности необходимо умение считать проценты. Понимать, как они «получаются». Торговые надбавки, НДС, скидки, доходность вкладов, ценных бумаг...
Часы с которых можно звонить детские
Ребенка, который самостоятельно посещает школу или гуляет с друзьями, подстерегает много опасностей. Решить эту проблему помогут технологичные детские умные часы...
Adblock detector