Создать чат личный. Где можно создать свой чат
Используя услуги сервиса чатов, обязательно принять пользовательское соглашение . Факт использования услуг означает безусловное принятие всех пунктов соглашения.
Инструкции Возможности чата- В открытый чат может войти любой посетитель, даже не зарегистрированный.
- В чат со свободной регистрацией может войти любой, предварительно зарегистрированный, пользователь. Поскольку в чат допускаются только зарегистрированные пользователи, это облегчает работу модератора.
- Модерируемый чат могут просматривать все (в том числе, не зарегистрированные пользователи), но войти в такой чат может только зарегистрированный пользователь, причём участие в чате должно быть предварительно подтверждено администратором.
- Закрытый чат целиком управляется владельцем чата: только владелец разрешает доступ в чат другим зарегистрированным пользователям. Только такие пользователи могут просматривать чат и общаться в закрытом чате.
- Возможность задать полностью индивидуальное оформление чата, указав свой стиль CSS для чата.
- Возможно подключение собственных скриптов JavaScript для настройки чата под собственные нужды (осуществляется через обращение в службу поддержки).
- Создание отдельных комнат в чате, отображающихся в виде закладок в чате. Зайдя в чат, пользователь затем сможет войти в одну или сразу в несколько комнат, созданных администратором чата.
- Отображение статистики посещаемости чата и интенсивности общения по часам, дням, месяцам.
- В чате появится возможность просмотреть историю сообщений, где хранятся все сообщения чата за последний год.
- Прямая ссылка со страницы чата на нашем сервисе на Ваш сайт, указанный в настройках чата.
- Доход от размещения объявлений и головастиков в Вашем чате составит не 30%, а 60%.
- В будущем будут появляться и другие возможности для "Профессиональных" чатов, о чём будет сообщено в
В этом уроке мы будем создавать простое приложение веб-чата с помощью PHP и jQuery. Утилита такого типа прекрасно подойдет для системы онлайн-поддержки вашего сайта.
ВведениеПриложение чата, которое мы сегодня построим, будет довольно простым. Оно будет включать в себя систему входа и выхода, возможности в AJAX-стиле, а также предложит поддержку нескольких пользователей.
Шаг 1: HTML разметкаМы начнем этот урок с создания нашего первого файла index.php.
Chat - Customer Module
Welcome,
Exit Chat
- Мы начнем наш html с обычных DOCTYPE, html, head, и body тагов. В таг head мы добавим наш заголовок и ссылку на нашу таблицу стилей css (style.css).
- Внутри тага body, мы структурируем наш макет внутри блока - обертки #wrapper div. У нас будет три главных блока: простое меню, окно чата и поле ввода нашего сообщения; каждый со своим соответствующим div и id.
- Блок меню #menu div будет состоять из двух абзацев. Первый будет приветствием пользователю и поплывет налево, а второй будет ссылкой на выход и поплывет направо. Мы также включим блок div для очистки элементов.
- Блок чата #chatbox div будет содержать лог нашего чата. Мы будем загружать наш лог из внешнего файла с использованием ajax-запроса jQuery.
- Последним пунктом в нашем блоке-обертке #wrapper div будет наша форма, которая будет включать в себя текстовое поле ввода для сообщения пользователя и кнопку отправки.
- Мы добавляем наши скрипты последними, чтобы грузить страницу быстрее. Сначала мы вставим ссылку Google jQuery CDN, так как в этом уроке мы будем использовать библиотеку jQuery. Наш второй таг скрипта будет там, где мы будем работать. Мы загрузим весь наш код после того, как документ будет готов.
Теперь мы добавим немного css, чтобы заставить наше приложение чата выглядеть лучше, чем стиль браузера по умолчанию. Код, указанный ниже будет добавлен в наш файл style.css.
/* CSS Document */ body { font:12px arial; color: #222; text-align:center; padding:35px; } form, p, span { margin:0; padding:0; } input { font:12px arial; } a { color:#0000FF; text-decoration:none; } a:hover { text-decoration:underline; } #wrapper, #loginform { margin:0 auto; padding-bottom:25px; background:#EBF4FB; width:504px; border:1px solid #ACD8F0; } #loginform { padding-top:18px; } #loginform p { margin: 5px; } #chatbox { text-align:left; margin:0 auto; margin-bottom:25px; padding:10px; background:#fff; height:270px; width:430px; border:1px solid #ACD8F0; overflow:auto; } #usermsg { width:395px; border:1px solid #ACD8F0; } #submit { width: 60px; } .error { color: #ff0000; } #menu { padding:12.5px 25px 12.5px 25px; } .welcome { float:left; } .logout { float:right; } .msgln { margin:0 0 2px 0; }
В вышеуказанном css нет ничего особенного, кроме того факта, что некоторые id или классы, для которых мы устанавливаем стиль, будут добавлены немного позже.
Как вы можете видеть выше, мы закончили строить пользовательский интерфейс чата.
Шаг 3: Используем PHP, чтобы создать форму входа.Теперь мы реализуем простую форму, которая будет спрашивать у пользователя его имя, перед тем, как пустить его дальше.
Функция loginForm(), которую мы создали, состоит из простой формы входа, которая спрашивает у пользователя его/ее имя. Затем мы используем конструкцию if else, чтобы проверить, ввел ли пользователь имя. Если человек ввел имя, мы устанавливаем его, как $_SESSION["имя"]. Так как мы используем сессию, основанную на cookie, чтобы хранить имя, мы должны вызвать session_start() перед тем, как что-нибудь выводить в браузер.
Есть одна вещь, на которую вы возможно захотите обратить особое внимание - то, что мы использовали функцию htmlspecialchars(), которая конвертирует специальные символы в HTML сущности, тем самым защищая имя переменной, чтобы оно не стало жертвой межсайтового скриптинга (XSS). Мы также добавим эту функцию позже к текстовой переменной, которая будет опубликована в логе чата.
Отображение формы входаДля того, чтобы показать форму логина в случае, если пользователь не вошел в систему, и следовательно, не сессия не создалась, мы используем другую инструкцию if else вокруг блока-обертки #wrapper div и тагов скрипта в нашем исходном коде. В противоположном случае, если пользователь вошел в систему и создал сессию, этот код спрячет форму входа и покажет окно чата.
Welcome,
Exit Chat
// jQuery Document $(document).ready(function(){ }); Приветствие и меню выхода из системыМы еще не закончили создавать систему входа для этого приложения чата. Нам еще нужно дать пользователю возможность выйти из системы и закончить сессию чата. Как вы помните, наша исходная HTML разметка включала в себя простое меню. Давайте вернемся назад и добавим некоторый PHP код, который придаст меню больше функциональности.
Прежде всего, давайте добавим имя пользователя в сообщение приветствия. Мы сделаем это, выводя сессию имени пользователя.
Welcome,
Для того, чтобы позволить пользователю выйти из системы и завершить сессию, мы прыгнем выше головы и кратко используем jQuery.
// jQuery Document $(document).ready(function(){ //If user wants to end session $("#exit").click(function(){ var exit = confirm("Are you sure you want to end the session?"); if(exit==true){window.location = "index.php?logout=true";} }); });
Код jquery, приведенный выше просто показывает диалог подтверждения, если пользователь кликнет по ссылке выхода #exit. Если пользователь подтвердит выход, тем самым решив закончить сессию, мы отправим его в index.php?logout=true. Это просто создаст переменную с именем logout со значением true. Мы должны перехватить эту переменную с помощью PHP:
If(isset($_GET["logout"])){
//Simple exit message
$fp = fopen("log.html", "a");
fwrite($fp, "User ". $_SESSION["name"] ." has left the chat session.
");
fclose($fp);
session_destroy();
header("Location: index.php"); //Redirect the user
}
Теперь мы увидим, существует ли get переменная "logout", используя функцию isset(). Если переменная была передана через url, такой, как ссылка, упомянутая выше, мы переходим к завершению сессии пользователя с текущим именем.
Перед уничтожением сессии пользователя с текущим именем с помощью функции session_destroy() мы хотим выводить простое сообщение о выходе в лог чата. В нем будет сказано, что пользователь покинул сессию чата. Мы сделаем это, используя функции fopen(), fwrite() и fclose(), чтобы манипулировать нашим файлом log.html, который, как мы увидим позднее, будет создан в качестве лога нашего чата. Пожалуйста, обратите внимание, что мы добавили класс "msgln" в блок div. Мы уж определили стиль css для этого блока.
Проделав это, мы уничтожаем сессию и перенаправляем пользователя на ту же страницу, где появится форма входа в систему.
Шаг 4: Поддержка пользовательского ввода данныхПосле того, как пользователь подтвердил свои действия в нашей форме, нам нужно захватывать его ввод с клавиатуры и писать его в лог нашего чата. Для того, чтобы сделать это, мы должны использовать jQuery и PHP, чтобы работать синхронно на стороне сервера и на стороне клиента.
jQueryПрактически все, что мы собираемся делать с jQuery для обработки наших данных, будет вращаться вокруг запроса на jQuery post.
//If user submits the form $("#submitmsg").click(function(){ var clientmsg = $("#usermsg").val(); $.post("post.php", {text: clientmsg}); $("#usermsg").attr("value", ""); return false; });
Пожалуйста обратите внимание, что код, указанный выше, пойдет в наш таг скрипта, где мы поместили jQuery код выхода из системы.
PHP - post.phpНа данный момент мы имеем данные POST, отправляемые в файл post.php каждый раз, когда пользователь отправляет форму и посылает новое сообщение. Наша задача теперь захватить эти данные и записать их в лог нашего чата.
- Сообщение, которое мы будем записывать, будет заключено внутри блока.msgln div. Он будет содержать дату и время, сгенерированную функцией date(), сессию имени пользователя и текст, которые также будет окружен функцией htmlspecialchars(), чтобы избежать XSS.
И наконец, мы закрываем наш файл с помощью fclose().
Все, что пользователь разместил, обработано и опубликовано с помощью jQuery; оно записано в лог чата с помощью PHP. Единственное, что осталось сделать - это показать обновленный лог чата пользователю.
Чтобы сэкономить нам немного времени, мы предварительно загрузим лог чата в блок #chatbox div, как если бы он что-то содержал.
Мы используем процедуру, похожую на ту, что мы использовали в файле post.php, но на этот раз мы только читаем и выводим содержимое файла.
Запрос jQuery.ajaxЗапрос ajax - это ядро всего, что мы делаем. Этот запрос не только позволяет нам посылать и принимать данные через форму без обновления страницы, но также и позволяет нам обрабатывать запрошенные данные.
//Load the file containing the chat log function loadLog(){ $.ajax({ url: "log.html", cache: false, success: function(html){ $("#chatbox").html(html); //Insert chat log into the #chatbox div }, }); }
Мы завернем наш ajax запрос в функцию. Вы увидите, зачем, прямо сейчас. Как вы можете видеть выше, мы использовали только три из объектов запроса jQuery ajax.
- url : Строка URL для запроса. Мы используем имя файла лога нашего чата log.html.
- cache : Это предотвратит кэширование нашего файла. Это обеспечит нам то, что всегда, когда мы посылаем запрос, мы будем иметь обновленный лог чата.
- sucess : Это позволит нам прикрепить функцию, которая передаст запрошенные нами данные.
Как вы видите, затем мы перемещаем запрошенные нами данные (html) в блок #chatbox div.
АвтопрокруткаКак мы, возможно, видели в других приложениях чатов, содержимое автоматически прокручивается вниз, если контейнер лога чата (#chatbox) переполняется. Мы воплотим простую и похожую возможность, которая будет сравнивать высоту полосы прокрутки контейнера до и после того, как мы выполним ajax запрос. Если высота полосы прокрутки стала больше после запроса, мы используем эффект анимации jQuery, чтобы прокрутить блок #chatbox div.
//Load the file containing the chat log function loadLog(){ var oldscrollHeight = $("#chatbox").attr("scrollHeight") - 20; //Scroll height before the request $.ajax({ url: "log.html", cache: false, success: function(html){ $("#chatbox").html(html); //Insert chat log into the #chatbox div //Auto-scroll var newscrollHeight = $("#chatbox").attr("scrollHeight") - 20; //Scroll height after the request if(newscrollHeight > oldscrollHeight){ $("#chatbox").animate({ scrollTop: newscrollHeight }, "normal"); //Autoscroll to bottom of div } }, }); }
- Сначала мы сохраним высоту полосы прокрутки блока #chatbox div в переменную oldscrollHeight перед выполнением запроса.
- После того, как наш запрос вернет успех, мы сохраним высоту полосы прокрутки блока #chatbox div в переменную newscrollHeight.
- Затем мы сравним высоту полосы прокрутки в обеих переменных, используя конструкцию if. Если newscrollHeight больше, чем oldscrollHeight, мы используем эффект анимации, чтобы прокрутить блок #chatbox div.
Теперь может возникнуть вопрос, как часто мы будем обновлять новые данные, переданные между пользователями. Или перефразируя вопрос, с какой регулярностью мы будем отправлять постоянные запросы на обновление данных?
SetInterval (loadLog, 2500); //Reload file every 2500 ms or x ms if you wish to change the second parameter
Ответ на наш вопрос находится в функции setInterval. Эта функция будет запускать нашу функцию loadLog() каждые 2,5 секунды, которая будет запрашивать обновленный файл и делать автопрокрутку блока.
ЗакончилиМы закончили! Я надеюсь, что вы изучили, как работает базовая система чата, и, если у вас есть какие-либо пожелания, я с радостью их приветствую. Это максимально простая система чата, которую вы можете создать как приложение чата. Вы можете оттолкнуться от нее и построить множественные чат комнаты, добавить админку, эмотиконы и т.д. Здесь ваш предел - это небо.
Ниже привожу несколько ссылок, которые вы возможно захотите посмотреть, если задумаетесь о расширении этого приложения чата:
- Защитите ваши формы ключами форм - избегайте XSS (межсайтового скриптинга) и подделок межсайтовых запросов.
- Отправка формы без обновления страницы с использованием jQuery - расширьте наш ajax запрос
- Как делать AJAX запросы на чистом Javascript - изучите, как работает кухня запросов на чистом javascript.
- Следите за нами на
Каждое лето у многих цветоводов возникает одна и та же проблема: как обеспечить полив растений на те две или три недели, когда они собираются отправится в отпуск. Как быть если ни соседи, ни друзья не могут помочь им при этом. В качестве выхода можно предложить несколько способов обеспечения водой растений на довольно продолжительный срок: 1) Системы для полива,
Какие есть иностранные музыкальные телеканалы
Официальные сайты русских музыкальных телеканалов: Bridge Tv - канал для молодых и активных людей, кто любит музыку в стиле “EuroPop”. В эфире можно увидить не только новые, но и хорошо знакомые клипы, с которыми связано немало приятных воспоминаний Music Box Rus - Первый в России 1
Что такое "Хорошие шутки"
Хорошие шутки - юмористическая телевизионная программа на канале СТС. Ведущие программы: Михаил Шац, Татьяна Лазарева и Александр Пушной. Правила:Шоу представляет собой игру, построенную по принципу «юмористических боев без правил». Две команды, состоящие из певцов, актеров, спортсменов, телеведущих и других известных людей - обычно
Кто написал роман "Гарпия"
Генри Лайон Олди — коллективный псевдоним украинских писателей Дмитрия Евгеньевича Громова и Олега Семеновича Ладыженского. Псевдоним был составлен из первых слогов имен авторов: Олег (ОЛ) и Дима (ДИ). Имя Генри Лайон пришлось придумать позднее, поскольку по правилам одного из издательств автор обязан был полностью указывать свое имя. Имя Ге
В каком году основан город Миасс
Миасс — город в составе Челябинской области (Россия). Город расположен на реке Миасс у подножия Ильменских гор, в 96 км к юго-западу от областного центра — Челябинска. Неподалёку от города находится Ильменский минералогический заповедник. Территория города 111,9 км2, численость жителей — 151,8 тыс.
Что означает имя Ефим
Внимание: Представленная ниже информация не имеет научного обоснования. Ефим Значение: «Благочестивый», «благодушный». Происхождение: Происходит от древнегреческого «эуфемос». В Россию пришло из Византии вместе с христианством. Покровитель имени — священномучени
Кода наступает момент срабатывания сцепления
Момент срабатывания сцепления в автомобиле Правая нога находится над акселератором. Нужно выжать педаль сцепления, включить I передачу. Держа сцепление выжатым, снять автомобиль с «ручника». Чтобы не пропустить момент срабатывания сцепления, педаль сцепления необходимо отпускать очень медленно, наблюдая за поведением автомобиля. Момент срабатывания
Где был установлен первый мировой рекорд в часовом беге
Часовой бег — это беговой вид лёгкой атлетики, где результат определяется расстоянием, пройденным бегуном за один час по дорожке стадиона. Дисциплина признана Международной ассоциацией легкоатлетических федераций (англ. International Association of Athletics Federations; IAAF; до 200
Какие постные блюда существуют
Викепидия - энциклопедические сведенья о рождественской посте;pravoslavie.ru - информация о рождественском посте (особенности питания, и т.д); zavet.ru - история возникновения рождественского поста, основные правила;patriarchia.ru - сайт русской православной церкви, об истории установления поста и его значени
Как сделать имитатор сигнализации
Мигалка на светодиоде - схема Описание схемы Эта схема представляет собой простейший несимметричный мультивибратор, что приводит к прерывистому свечению светодиода. Частота вспышек светодиода определяется частотой генерации мультивибратора. При включении источника питания, ток коллектора транзистора VТ2 скачком изменится от нуля, до начального значения, которое определяется резисторами R
Как избавиться от тёмных кругов под глазами
Причины появления тёмных кругов под глазамиТемные круги и отеки под глазами - довольно распространенная косметическая проблема. Ее основная причина - нарушение лимфатического и венозного оттока. Темные кругисиняки под глазами появляются от недосыпания, переутомления или если много плакать. Кроме того, они могут быть вызваны избыточной пигментацией или
Уже давно привычной является , через которую любой посетитель может связаться с администратором сайта. Это обязательный элемент для любого проекта. Но обычная контактная форма не заменит живой онлайн чат на сайте.
В этой статье вы узнаете о том, как создать онлайн чат на сайте с помощью плагина. Это новый уровень обратной связи с посетителем, который значительно улучшает любой проект.
На каких проектах онлайн чат будет рентабельнымНе на всех видах сайта можно использовать онлайн чат со всей его полезностью. Где-то он будет эффективным, а где-то – лишним элементом.
- Онлайн чат на сайте будет максимально полезен на проектах-сервисах, то есть на таких, где посетители как-то взаимодействуют с ресурсом. Например, в интернет-магазинах, учебных курсах, форумах и прочих интерактивных проектах.
- Совершенно не рентабельно будет использовать онлайн чат на сайте, на котором посетители приходят просто ознакомиться с информацией, например, на информационных блогах. На таких проектах достаточно обычной формы контактов и комментариев.
Исходя из описанного, выберите, нужно ли вам это.
Достоинства и недостатки онлайн чата на сайтеОнлайн чат на сайте обладает следующими достоинствам и недостатками:
- Из достоинств следует выделить то, что посетитель может в любой момент получить быструю помощью по интересующему его вопросу.
- Из недостатков необходимо отметить то, что всегда-то кто-то должен быть в онлайне, и быть готовым быстро отреагировать, что иногда бывает затруднительно дорого.
Наконец добрались до главной задачи – как сделать онлайн чат. Для того следует использовать плагин Wise Chat. Он простой и лёгкий, но на английском языке, поэтому придётся разбираться.
После установки и активации плагина на вашем сайте необходимо перейти в пункт «Настройки» подпункт «Wise Chat Settings». Здесь собраны все настройки, которые есть у этого плагина. Они разделены на секции. Настроек очень много, поэтому мы не станем их рассматривать. Такое количество опций позволяет настроить чат тонко для любых необходимых задач.
Чтобы вывести чат на сайте, необходимо использовать одноимённый виджет. Он находится среди всех . Среди настроек виджета чата есть только заголовок и возможность исполнения любого шорткода при необходимости.
Думаю, что каждый из Вас знает, что такое чат. И очень часто на сайтах можно встретить либо маленькие чаты, либо достаточно большие и сложные. В этой статье я опишу принцип создания чата . Обратите внимание, что в этой статье не будет готового кода "скопировал-вставил ", а только алгоритм, с помощью которого Вы, обладая необходимыми знаниями, сможете сделать чат .
Ключевая особенность чата в том, что его содержимое обновляется автоматически . Отсюда и возникают все трудности.
Для начала разберём с Вами структуру таблицы в базе данных . Вот те поля, которые обязательно потребуются:
- id - уникальный идентификатор.
- name - имя, оставившего сообщение. Здесь также может быть, например, user_id , означающий id пользователя из другой таблицы.
- message - сам текст сообщения.
- date - дата отправления сообщения.
Безусловно, это только пример. Вы можете добавлять ещё массу других полей, тем самым, расширяя возможности Вашего чата.
Теперь необходимо вывести HTML-код :
Имя | Сообщение | Дата |
Имя | Сообщение | Дата |
В данном коде опять же всё как пример. Можно всё смело менять, но принцип должен быть тем же: есть место, где выводятся сообщения, причём они выводятся в одинаковом виде. Вместе с полем, где выводятся сообщения, есть текстовое поле и кнопка "Отправить ".
Обязательно для блока chat поставьте фиксированную высоту, чтобы при добавлении новых сообщений, у Вас этот блок не вырастал, также поставьте полосу прокрутки у него, чтобы можно было просмотреть все сообщения. Всё это делается с помощью CSS .
Теперь займёмся JavaScript :
function send() {
var message = document.getElementById("message").value;
var name = "Гость";
/* Здесь блок отправки POST-запроса с данными (например, через Ajax) */
}
function update() {
/* Здесь отправка запроса на получение всех сообщений (например, через Ajax) */
/* Здесь вывод сообщений в определённом формате прямо в HTML-код с использованием DOM, либо JQuery. */
}
setInterval("update()", 1000); // Обновление окна чата каждую секунду
И, наконец, PHP-код (добавление новых сообщений):
И последний файл, которые потребуется - это получение всех сообщений из таблицы:
Всё, круг замкнулся, и чат заработал. Как видите, сделать чат достаточно сложно и нужно обладать большим багажом знаний. Но я надеюсь, что данная статья здорово облегчит Вам эту задачу. Абсолютно любой чат, какой бы он сложный ни был, основан на принципах, описанных в данной статье, поэтому смело можете его использовать как каркас.