Мини-чатик в один файл на PHP, HTML, CSS и JS

01.05.2014 18:24
208
Вобщем дело было так - собрался с праздновать свой ДР, народ мол "давай список подарков и все такое, а то подарим тебе надувную бабу по умолчанию" :)

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

Отправить всем емейлы? А если люди не хотят чтобы кто-то еще знал их емейл? Тоже и про телефоны. Экзотические вещи вроде гуглспредщитов и всякой другой онлайн-ахинеи мне были не сильно интересны - все-таки конфиденциальная информация :)

И вообще, программист я или где?

За час с небольшим был написан мини-чатик с пасьянсом и дурными феями, еще час на доделывания хотелок от народа и час на дебаг.

Вроде даже все получилось и даже понравилось. (Хотя время от времени раздавались вопли мол: "Ну че за херня - файл нельзя отправить, голосовое сообщение тоже, и вообще какого хрена без 3D?")

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

Фишки:

  • Весь чат одним файлом на PHP + HTML + CSS + JS
  • Никакой БД, вся история хранится в HTML файлике, куда засовываются уже оформленные в HTML сообщения
  • Авторизации тоже не предусмотрено - все свои
  • Никаких WebSockets и long polling-ов - старый добрый хардкорный "А есть чо?"
  • Запоминание выбранного ника в куках
  • Вырезание всякого "ге" из текста и ника при постинге и ограничение их по длине
  • Обрезка подгружаемого куска чата
  • Отправка данных только в случае, если они были изменены (но отправляется весь кусок)
  • Отключаемый автоскролл
  • Отключаемый звук отправки/получения сообщения
  • Возможность задать время опроса, путь до файла с чатом, длину пересылаемого куска, оформление сообщений
  • Блокирование диалогов при загрузке и постинге, если скорость низкая
  • Подсказки в случае всяких фейлов
  • Кросс-браузерная работа - традиционно WebKit-ы (Chrome, Safari и др.), Firefox.
    IE браузером не считаю - это программа типа WGET для скачивания файлов (в том числе нормальных браузеров) просто с GUI - но и в нем должно работать, пусть и не так красиво
  • Без каких-либо jQuery и других фреймворков - только чистый JS, только хардкор
  • Все максимально просто, коротко, понятно и со вкусом
  • Огромное пространство для творчества и модификаций

Пользуйтесь на здоровье!

P.S. Иногда вот так покодить на чистом JS, вспомнить как сделать анимацию вручную, как работают стандартные селекторы и написанная с нуля обвязка XMLHttpRequest - это просто клево.

Вообще, чистый JS и когда ты сам себе в коде хозяин, а не лениво просишь "Эй, jQuery дай-ка мне тот DIV и отправь его содержимое по AJAX на воон тот URL!" - это приятно и полезно для мозгов :)

P.P.S. Не забудьте на хостинге правильно настроить кодировку и проверить наличие расширения mbstring у PHP - иначе будут проблемы с работой чата

Скачать chat.php, версия от 09.09.21 (utf8)

скачать

Скачать chatWin.php, версия от 09.09.21 (последняя с win1251 от 10.04.18, исправлена XSS)

скачать
История версий:

09.09.21
  • исправлена уязвимость XSS в нике, спасибо name за фидбэк
09.08.21
  • поправлена бага с копированием всего чата при клике за границей сообщения, спасибо Mike за фидбэк
02.07.20
  • добавлено опциональное авторастягивание ввода сообщения под размер введенного текста
06.02.20
  • закомментированы строчки с content-length заголовком, т.к. браузеры выкидывают на них исключение безопасности, спасибо Виктору за фидбэк
22.01.20
  • поправлена бага с экранированием переноса строк из-за чего вместо переносов писалось "<br />", спасибо Сергею за фидбэк
24.11.19
  • по многочисленным просьбам чат переделан в UTF-8
  • добавлен звук отправки и получения сообщения (отключаемо)
  • пофикшены мелкие баги
10.04.18
  • добавлена подсветка URL в сообщениях
  • исправлена ошибка с незапоминанием имени
  • изменен дизайн всплывающих подсказок
  • изменен цвет даты и IP
  • изменен дизайн ввода имени
  • пофикшены мелкие баги
08.05.14
  • первый публичный релиз

01.05.2014, Protocoder
Борис21.11.2014 22:52:55#ответить
Отличный Мини-чатик... ОГРОМНОЕ СПАСИБО!!!
Protocoder22.11.2014 22:52:05#ответить
Всегда пожалуйста :)
seryogausilitel20.08.2022 15:34:59#ответить
Спасибочки за чатик! ) Да, очень пригодился!)
Илья25.04.2018 22:06:56#ответить
спс наконец-то закончил соц сеть)))))
пользователь18.07.2016 14:51:26#ответить
Спасибо!
Kent25.03.2018 19:34:34#ответить
Здравствуйте ! Чат отличный ! но не хочет отображать русский язык и постоянно пишет ошибка сервера !
Protocoder25.03.2018 19:49:29#ответить
Чат точно работает - проверено неоднократно.

Возможно проблемы, которые у Вас наблюдаются, связаны с тем, что чат рассчитан по кодировку CP1251 и сервер должен быть настроен на нее "по умолчанию".

Как вариант - если сервер Apache - добавьте в каталог с чатом файл .htaccess (или добавьте строчку к существующему .htaccess):
AddDefaultCharset windows-1251

Должно помочь.
Kent25.03.2018 20:38:34#ответить
В место "привет" отображает вот так "(п?иве?" с англ работает не проблема .
Я попробовал то , что вы мне описали , результатов не дало. Да , сервер Apache.
Protocoder26.03.2018 19:39:25#ответить
Проверьте в инструментах разработчика в браузере заголовки - если там все в порядке с content-type и его кодировкой - смотрите что с кодировкой на сервере (хостинге).
Может быть на сервере не встает 1251 локаль - что запросто может быть.
Посмотреть это элементарно - в самом начале PHP-файла с чатом идет установка локали - вот после нее и вывести текущую локаль - будет ли она 1251?

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

Кстати, для Apache и .htaccess можно попробовать еще вот такой вариант:
CharsetDisable on
CharsetDefault windows-1251
CharsetSourceEnc windows-1251
AddDefaultCharset windows-1251
Влад08.04.2018 19:58:33#ответить
Добрый день.
Как очистить чат от ненужных записей?
Protocoder10.04.2018 00:59:14#ответить
Чат пишется в файл chat.db - это по сути обычный html-файл и там можно подправить все, что надо, открыв его обычным текстовым редактором.
Либо вообще удалить этот файл - тогда чат пересоздаст его и будет полностью чист.
Fendibober09.04.2018 13:40:52#ответить
Добавил функцию подсветки гиперссылок

function parse_links( $str ) {
$str = str_replace( 'www.', 'http://www.', $str );
$str = preg_replace( '|http://([a -zA-Z0-9-._()/]+)|', '<a href="http://$1">$1</a>', $str );
$str = preg_replace( '|https://([ a-zA-Z0-9-._()/]+)|', '<a href="https://$1">$1</a>' , $str );
$str = preg_replace( '/(([a-z0-9+ _-]+)(.[a-z0-9+_-]+)*@([a -z0-9-]+.)+[a-z]{2,6})/', '<a href="mailto:$1">$1</a>', $str );
return $str;
}

if ( $text ) $text = parse_links( $text );
Protocoder10.04.2018 21:55:52#ответить
В новой версии по многочисленным просьбам добавлена подсветка URL (емейлов - нет), правда по гораздо более простому алгоритму.
Владимир22.04.2018 17:40:26#ответить
Чатик отличный! Сайт у меня на utf-8, у чата кодировка win1251. В файле изменил все записи на utf-8 и сохранил в utf-8, но не тут-то было. В чем моя ошибка? Как перевести чат на utf-8?
Protocoder25.04.2018 14:18:21#ответить
Одной только конвертацией не обойтись.

Дело в том, что строковые функции в PHP отличаются для работы с UTF-8 или с WINDOWS-1251.

Поэтому для того, чтобы заработало в UTF-8 потребуется переписать весь PHP-код, работающий со строками.

Еще как вариант - оставить WINDOWS-1251 только для чата - создать отдельную папку для чата на хостинге и через .htaccess дать всему, что внутри кодировку WINDOWS-1251.
Владимир25.04.2018 22:28:49#ответить
Здравствуйте.

Создавал отдельную папку для чата на сайте, установил .htaccess (AddDefaultCharset windows-1251).
Все срабатывает, но... только после перезагрузки страницы чата и совсем нет заглавных букв.

Комбинация :

CharsetDisable on
CharsetDefault windows-1251
CharsetSourceEnc windows-1251
AddDefaultCharset windows-1251

Выдает ошибку 500.

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

Есть ли еще варианты?
Protocoder26.04.2018 01:52:37#ответить
Ошибка 500 выдается скорее всего из-за ограничений, который накладывает хостинг-провайдер на параметры в htaccess -это надо уточнять в тех. поддержке провайдера.

По-поводу отсутствия заглавных букв - значит не все правильно настроено на хостинге - что-то вмешивается в кодировку. Чат абсолютно рабочий и проверен ни один десяток раз.

Варианты есть - можете переписать все под UTF-8 - там ничего сложного нет, исходник открыт - заодно другие страждущие Вам спасибо скажут.
Владимир26.04.2018 10:01:45#ответить
Эх... Если бы мог...
Я и так в свои 60 с лишком (пенсионер, да и еще с недавних пор инвалид 1 группы) стал, как пацан - более менее понял html и css.

Подскажите откуда плясать, буду вникать.

Будьте здоровы.
Protocoder26.04.2018 23:07:27#ответить
Если не знакомы с базовыми знаниями по PHP - то плясать с него и базовых знаний - без этого Вы в коде не разберетесь вообще - однако это все уже выходит за рамки данной статьи.

Что до моего вмешательство в чат и UTF-8 - может быть когда-нибудь у меня руки до него и дойдут, но ничего обещать не могу.
Юрий18.08.2019 14:43:13#ответить
Закоментите эти три строчки
//if ( $name ) $name = cleanName( iconv( "windows-1251", "UTF-8//IGNORE", $name ) );
//else $name = $cookieName;

//if ( $text ) $text = cleanText( iconv( "windows-1251", "UTF-8//IGNORE", $text ) );

у себя так сделал и все ок.
Юрий10.11.2018 20:55:19#ответить
Здравствуйте

Чат работает прекрасно!

Я пытаюсь внутренний JS-скрипт вынести в наружный файл - не получается, отказывается работать на внешнем подключении.
Подскажите плиз - как сделать.

Всего хорошего вам
Protocoder14.11.2018 14:27:28#ответить
Здравствуйте!

Скрипт там заточен работать как inline - в этом весь смысл был, чтобы чат занимал четко один файл.

Но, если очень хочется, то конечно можно вынести его в отдельный файл, как и css.

Для этого надо перенести все содержимое тэга script на строке 708 в отдельный .js, и подключать его надо будет здесь-же, т.е. в 708 строке, ибо там инициализация происходит с условием, что все элементы страницы уже загружены.

Либо можно вместо анонимной функции которая вызывается после интерпретации всего JS в тэге сделать ее именованной, вынести в скрипт, который подключать в head, но не вызывать ее сразу, а только после загрузки всего документа.
Юрий14.11.2018 18:54:48#ответить
Спасибо большое - я покопаюсь.
Я SEO-шник, у нас привычка выносить весь служебный код наружу. Даже в сжатом виде JS занимает около 9 Кб
Одно плохо - я не силен в JS!
Еще раз большое спасибо - покопаюсь еще раз - я его и подключал в этом месте (вернее на своей странице вставил)
sogan29.11.2018 21:30:07#ответить
Отличный чатик, все работает, .htaccess только в папку добавил с кодировкой.
turboblacktorbacom30.11.2018 18:14:25#ответить
Хороший скрипт. люблю минимализм, и он хорошо смотрится на телефоне.
А есть какие-то варианты добавить туда простейшие бб-коды, что бы вставлять картинку, жирным, или подчеркнутым шрифтом? самые простые?
Protocoder06.12.2018 02:07:07#ответить
Варианты конечно есть - скрипт открыт - Вы можете его менять как душе угодно, в том числе - допиливать нужный функционал :)

А на данный момент, так как я тоже люблю минимализм, в нем ничего этого нет.
Anj21.03.2019 17:03:21#ответить
Да, отличный чатик вышел)) мне понравился
Константин04.04.2019 23:00:59#ответить
Чат хороший!
Антон08.04.2019 21:01:28#ответить
Чат перевели на UTF-8?
Protocoder09.04.2019 01:29:19#ответить
Нет, даже в планах не было - меня вполне WIN-1251 устраивает.

Исходник открыт - можете сами сделать все, что хотите - в том числе и UTF-8.
Антон12.04.2019 22:37:21#ответить
Чат улучшил, добавил немного функционал (поправил стили).

Есть вопрос один. Ответьте по возможности.

После формы стоят блоки <div class="ad"></div>, <div class="ct"></div>, <div class="cb"></div>

Зачем они были нужны?

Это боковые тени?
Protocoder13.04.2019 14:28:27#ответить
Да, эти блоки нужны для создания теней у блока с контентом.
Можете удалить их в веб-инструментах в браузере - увидите что будет.
Антон29.04.2019 22:46:23#ответить
Все сделал в лучшем виде, чат безупречен.

Сейчас встал вопрос конфиденциальности. Пожалуйста подскажите как сделать чтобы в чате не отображались IP адрес. в Стилях поставить none не вариант.
Protocoder02.05.2019 16:41:57#ответить
Убрать вывод IP очень просто - найдите в файле такой текст:

<span class="id">(' . $id . ')

и удалите его.
Николай02.05.2019 17:59:35#ответить
Спасибо)
Антон03.05.2019 15:42:10#ответить
Огромное спасибо! Отличный чат!

А над чем вы еще работаете в данное время?
Protocoder08.05.2019 02:36:18#ответить
Все, над чем работа. еще в свободное время рано или поздно появится здесь ":)
Николай02.05.2019 04:46:51#ответить
Приветы) спасибо за чат, но хотелось бы взглянуть на него вработе. Может кто из комментаторов скинет ссылку, по которой можно будет посмотреть и попользоваться?

Залил на сервер (TimeWeb): создал директорию, залил туда php, который скачал отсюда, скопировал и открыл существующий .htaccess, написал строку <AddDefaultCharset windows-125>, а при попытке открыть через браузер получил "Internal Server Error"
Что я делаю не так?

Короче исправил путем исправления header("Content-Type: text/html; charset=cp1251");

Осталось подогнать под себя (размеры, стили и т.п.) и вписать в iframe своих сайтов)
спасибо)))

Не хватает поддержки смайлов (emoji), что не очень критично, и очень не хватает распознование телефонных номеров.
Protocoder02.05.2019 16:40:09#ответить
Так, по порядку:

в .htaccess должна быть строчка:

AddDefaultCharset windows-1251

У Вас она написана неверно.
Использовать header для указания кодировки в данном случае - это костыль и так делать не надо.

Во-вторых: Emoji, распознавание телефонов и т.д. доделать элементарно - в чате есть парсинг ссылок - вот по аналогии с ним и сделать. Код открыт - меняйте под себя как нравится.
Алексей06.05.2019 16:48:04#ответить
Здравствуйте, отличный чат, на его основе делаю собственный мессенджер на Андроид, но есть одна проблема.

Дело в том, что код не выводит заглавную (первую букву), то есть, я пишу в сообщении " Привет" и нажимаю отправить, а вместо привет в окне диалога высвечивается "ривет", когда пытаюсь что-то написать на английском, на пример "Hello", то и диалоге выводится полное слово "Hello", то есть, не выводится только заглавная русская буква. Тоже самое и с ником, очень прошу подсказать решение, перебрал варианты но так ничего и не помогло((((
Николай07.05.2019 07:15:54#ответить
Приветствую. Не знаю что у вас не так. У меня изначально все работает https://xn--80aac3b7a.xn- -p1ai/chatnew/
Protocoder08.05.2019 02:33:15#ответить
Глюк у меня не воспроизводится, да и не возможен он, т.к. обработка букв стандартна для всех языков.

Так что либо неверно настроена кодировка в PHP, либо на сервере, либо на клиенте (если андроид), либо то и другое вместе.
Аня26.08.2019 17:58:09#ответить
А у вас нет случайно видео инструкции))
Protocoder01.09.2019 18:42:56#ответить
Вот чего уж нет, того нет :D
Даниил02.09.2019 19:36:38#ответить
Здравствуйте! У меня не отображаются русские буквы в Google Chrome, только значки вопроса. .htaccess добавил. Работает только в IE, если вручную переключить кодировку. Можно ли решить эту проблему?

Проблема решена. Использовал header, как другой комментатор.
Евгений22.10.2019 21:39:40#ответить
перевести на utf-8 легко - в функции cleanName закомментарьте $str = preg_replace( "~[^ 0-9a-zа-яё]~i", "", $str ); и в cleanText - тоже - такой блок - там идет вызов не utf функции
Protocoder23.10.2019 14:49:29#ответить
Чтобы они стали UTF-8, нужно просто вместо "~i" поставить "~iu" и все.
кис22.10.2019 23:33:05#ответить
А как его на сайт-то вставить?
Protocoder23.10.2019 14:50:48#ответить
Положить в любой каталог на сайте файл чата (можно даже в корень) и проверить его доступность.

Например, если положили в корень своего сайта, то попробовать открыть URL вида вашсайт/chat.php, или, если в папку - то вашсайт/папка/chat.php.

Если открываться не будет - значит либо надо доступ до него прописать, либо изменить rewrite-правила в зависимости от того, какой веб-сервер используется.
Юрий24.10.2019 23:02:40#ответить
Удаляйте эти строки и ставьте кодировку utf8, всё будет работать:

setlocale( LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251' ); //Устанавливаем кодировку WIN-1251

if ( $text ) $text = cleanText( iconv( "utf-8", "windows-1251//IGNORE", $text ) );

и изменить

if ( $name ) $name = cleanName( iconv( "utf-8", "windows-1251//IGNORE", $name ) );
else $name = $cookieName;

на

if ( !$name ) $name = $cookieName;
Eno24.10.2019 23:49:37#ответить
Как можно добавить в чат звуковое оповещение о новом сообщении?
Protocoder25.10.2019 14:23:32#ответить
Найти строчки:

if ( txt !== undefined ) {
msgs.innerHTML = txt;
if ( as.checked ) scrollBottom();
сюда вставить проигрывание звукового сигнала
}
Eno25.10.2019 19:04:28#ответить
После любого вставленного кода в этом месте сообщения перестают отправляться в чат. Нужный мп3 файл находится в той же папке, что и сам чат.
Protocoder25.10.2019 19:12:15#ответить
Значит у Вас ошибка в коде появилась - чудес не бывает, откройте консоль и посмотрите в чем там дело.

Вставлять надо нечто такое:
( new Audio( "./sound.mp3" ) ).play();
Eno25.10.2019 20:28:35#ответить
Спасибо, вашим способом все заработало.
MrMario22.11.2019 09:53:08#ответить
Всё супер, работает на УРА!
У кого вместо Русского символы, создавайте .htaccess и добавляйте туда PHP_VALUE default_charset windows-1251

P.S. ждём обновлений :)
Protocoder24.11.2019 15:55:43#ответить
Ну вот как раз и вышло обновление:
- теперь чат в UTF-8 - надеюсь, теперь с русским меньше проблем будет
- добавлено отключаемое проигрывание звука при отправке/получении сообщения
Анон14.05.2022 22:18:24#ответить
Благодарю за чатик! Появился вопрос: как починить странную то-ли ошибку, то-ли баг на 129-й строчке, которая упоминается при отправке сообщения?
Protocoder16.05.2022 19:26:57#ответить
На 129 строчке идет определение IP клиента.
Что за ошибка?
Никита13.01.2020 23:44:20#ответить
Поставил чат на сервер, когда отправляю сообщение оно не появляется в чат боксе, ошибка в консоле "Refused to set unsafe header ''Content-Length'"
Protocoder14.01.2020 21:03:06#ответить
Попробуйте убрать или закомментировать строчки 767 и 771 в файле чата.
Виктор06.02.2020 01:33:15#ответить
Помогло, спасибо!
Сергей21.01.2020 15:33:56#ответить
Все хорошо встало, работает отлично, но проблема. В тексте чата не отрабатывается тег переноса строки <br />. В тексте выглядит так: текст<br />текст Как это исправить?
Protocoder22.01.2020 14:35:36#ответить
Бага с экранированием новой строки, поправил.
Рома28.01.2020 22:54:21#ответить
Круто! Долго искал где взять такой вот чат и нашёл болшое спасибо !
Евгений30.01.2020 20:52:04#ответить
Чат просто супер, спасибо, подскажите пожалуйста как инклудить его в страницу сайта? Хотелось бы что бы он открывался не на отдельной закладке браузера, а именно был встроен в сам сайт.
Protocoder31.01.2020 11:55:07#ответить
Чтобы его использовать внутри любой страницы:

-все, что на PHP - вставить в начало нужной Вам страницы до какого-либо не-PHP кода

-стили из head - вставить либо в стили, либо в css этой страницы

-все, что в body - вставить в нужное место этой страницы

Чат написан на XHTML - соответственно, при копировании надо это учитывать, и убирать или оставлять экранирование CDATA.

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

Вобщем, стандартные навыки PHP/CSS/HTML, никаких особенностей у данного чата нет.

Ну, либо есть вариант проще - использовать FRAME/IFRAME, но там также надо будет корректировать стили.
Дартаньян26.02.2020 08:48:52#ответить
Просто лайк, от души
Вадим24.03.2020 21:43:40#ответить
Не пишет текст после отправки. как быть?
Protocoder24.03.2020 21:58:25#ответить
Не пишет в чем?
Какой браузер, версия?
Что на сервере?

И самое главное - файл с чатом создался на сервере?
Нет - значит дело в этом. Проблемы с правами на запись.
Если да - что в нем?
Даниил27.03.2020 16:53:28#ответить
Какое- то время работает, а потом выводит вот это: NONMODIFIED:1585309638?
Protocoder27.03.2020 20:18:01#ответить
Скорее всего включено кэширование на хостинге или что-то подобное.
Александр04.10.2022 18:07:17#ответить
Такая же проблема, не могу разобратся кеширование отключил. Что еще может быть?
Кирилл30.03.2020 18:41:29#ответить
Отличный чат, большое спасибо) Удачи!
Олегъ11.04.2020 16:19:49#ответить
Отлично. СПС!)))
Станислав15.04.2020 21:10:51#ответить
Здравствуйте, Protocoder!

СпасиБо, за Ваш труд!

Проверил работу с помощью Open Server:
1. Создал каталог CHAT\
2. вложил файл чата в каталог
3. вызвал открытие Каталога -
открылся чат с ошибкой в верхних строках.
4. ввел произвольно текст и отправил сообщение
5. все ошибки исчезли и чат заработал
(как удалось заметить в каталоге чата создался еще один файл: chat.db)

Может быть предложить почитателям Вашего Чата скинуться для небольшого вознаграждения Вашего труда, чтобы был стимул его модернизации?

Ничего в этом крамольного нет, ибо это уже давно приветствуется среди разработчиков.

Есть, все-таки, пожелание дополнить чат в режиме онлайн очищать файл базы при желании. ВЫ писали, что Вас зажигает новизна предложений, а некоторые этим только и живут)))

Есть предложение эти пожелания выстроить сверху-вниз от самых новых и ниже, иначе много строк приходится пролистывать вниз.

Можно ли Вам предложить еще немного своих пожеланий?

С уважением!
Protocoder16.04.2020 13:22:46#ответить
Мои потребности чат полностью закрывает.

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

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

Чат с открытым и очень простым исходным кодом - чистый, ванильный JS / CSS / HTML / PHP - никаких специальных билиотек.

Модифицируйте и осуществляйте свои хотелки сами и выкладывайте в сеть - это будет и быстрее и дешевле и полезнее как для общества, так и для ваших скиллов.

С уважением.
Станислав16.04.2020 21:34:57#ответить
Я не хотел вызвать у вас раздражения и, если это произошло, прошу прощения.
Очень сожалею, что пожелания были отождествлены с хотелками. Еще раз простите!
К сожалению, я из той поры, о которой Вы упомянули в пункте меню "О себе" и прекрасно помню
и "Радио РК-86" и "ZX-Scpectrum"....., но не удалось стать программистом, поэтому не обессудьте!
Не хочется засорять Ваш чат и убедительно прошу убрать все мои сообщения, чтобы не раздражать
посетителей этого сайта.
Мира Вам и Удачи!
Protocoder17.04.2020 14:20:05#ответить
Странно, я вроде-бы максимально нейтрально ответил.

Вы не вызвали никакого раздражения вообще.

Просто я ответил четко что к чему, чтобы не было больше вопросов.

Если Вы сами - не программист, но хотите получить какие-то реализации хотелок и хотите потратить немного денег - Вы всегда можете разместить заказ на фрилансе, дав, как основу, данный чат.

И все проблемы будут решены.
Ярослав17.04.2020 03:00:24#ответить
Здравствуйте, чат отличный, не могу не согласиться, но хотелось бы возможность прикреплять видео, аудио, картинки, гифки к сообщению. И я не много не понимаю, как сменить звук нового сообщения на отдельный файл?
Protocoder17.04.2020 14:23:14#ответить
Здравствуйте.

Прикреплять видео, аудио и т.д. этот чат не умеет и не будет уметь - он предназначен исключительно для обмена текстовой информацией.

Звук можно сменить, изменив строку 737: snd = new Audio( "поставив сюда закодированный в data-url нужный звук в формате mp3" );
Ученик19.04.2020 23:04:19#ответить
При проверки видимости чата на мобильном устройстве были отмечены некоторые тонкости:
1. В метатеге viewport должно быть значение device-width
2. Интерактивные элементы расположены слишком близко
3. Слишком мелкий шрифт

Что можно сказать по этому поводу?
Protocoder20.04.2020 23:26:36#ответить
По этому поводу могу сказать, что чат никогда не предназначался и не оптимизировался под мобильные платформы.

Хотите делать форк - делайте.
Там все можно CSS-ом разнести через media-query, не лезя в сам HTML.
Ну разве что мету только добавить - придется править HTML.
Ученик21.04.2020 11:15:36#ответить
А как Вы удаляете прочитанное содержание чата, которое уже не актуально?

Только через FTP?
Protocoder22.04.2020 14:46:30#ответить
Сделать можно как душе угодно.

Если вы про сам файл с общением - у меня стоит задача в кроне, которая этот файлик урезает до максимального размера. Но обычно все историю хранят. Скорость от этого не страдает, т.к. файл открывается и отдается только частью (если настроена CHATTRIM). Растет файл медленно - там ведь только HTML, а место под файлы сейчас недорогое - так что в большинстве случаев нет смысла с этим файлом вообще возиться.

Если Вы про пересылаемый кусок данного файла - то, что приходит в бразуер - размер этого куска задается переменной CHATTRIM - укажете в ней 0 (по-умолчанию) - будет пересылаться весь файл, укажите число - будет пересылаться не больше чем указанное число байт.
Ученик23.04.2020 14:59:37#ответить
А этот скрипт вопрос - ответ, Ваша личная разработка?
Тоже достаточно удобно работать.
Protocoder23.04.2020 22:51:07#ответить
Какой скрипт? Комментарии Вы так величаете что-ли? :)
Да, тоже моя, как и весь дизайн вместе с движком.

Но тут тема про чат - хотите уточнить что-то еще - пишите на мыло.
Олегъ30.04.2020 13:34:18#ответить
Здравствуйте!
А как убрать авто копирование всего текста написанного и отправленного сообщения мышкой в нижнее поле ввода? Чтоб копировало только имя или вообще не копировало бы! СПС за отличный мини чатик!).
Protocoder30.04.2020 21:48:37#ответить
Этим занимается обработчик msg.onclick в строках с 1212 - 1238, если ее удалить или закомментировать, то при клике на сообщение ничего не будет происходить.

Ну а если хочется только имя, то всю строку 1236 нужно заменить на: text.value += ">" + name;
Олегъ01.05.2020 17:05:48#ответить
Благо Дарю Вас! ))
Владимир19.05.2020 12:46:49#ответить
Спасибо
рус20.05.2020 17:23:18#ответить
подскажите как сделать чтобы чат выглядел по высоте и ширине примерно как тут? где эти значения менять нужно?
Protocoder20.05.2020 22:17:43#ответить
Тут - это где?

Все ширины и высоты настраиваются в CSS-стилях основного файла в тэге <style>.

P.S. Понял, что имели ввиду - это настраивается как раз теми самыми CSS-стилями. Но объяснять как это работает и как это сделать - не смогу - нет ни времени, ни желания.
Можете обратиться к любому WEB-верстальщику и он Вам сделает.
юрий05.06.2020 01:58:43#ответить
Спасибо, чат супер, пишу маленькие скрипты.
Ученик01.07.2020 16:18:47#ответить
Здравствуйте!
Если случайно выпадет свободное время, пожалуйста, напишите, что надо изменить в скрипте,
чтобы можно было сделать поле ввода текста сообщения "резиновым". За это многие будут благодарны. надеюсь.
Спасибо!
Protocoder02.07.2020 14:31:55#ответить
Не знаю надо ли оно всем, но мне оно давно нужно было - потому и реализовал сам.
Ученик03.07.2020 01:42:45#ответить
Благодарю за невероятную оперативность!
Что касается ВСЕМ......- время покажет, лично я благодарен вдвойне!

Хотелось бы еще узнать Ваше мнение о способе изменения размера окна по вертикали (того же растягивания) с помощью мыши и правого нижнего края самого окна?
Protocoder03.07.2020 13:47:51#ответить
Растягивание окна - это уже сами. Тем более делается это очень просто.
Roma27.07.2020 12:31:23#ответить
При отправке сообщения, когда верхнее окно уже заполнено до низу, происходит прокрутка, шрифт у всех сообщений становится немного больше и галочка "прокручивать вниз" сама отключается.
И если не обновить страницу, то последующие сообщения уже не прокручивается.
Если же страницу обновить галочка появляется, но снова после отправки сообщения отключается.
Таким образом повторная прокрутка происходит только после обновления страницы.
Это так и должно быть, или это ошибка ?
Roma27.07.2020 13:35:18#ответить
Найдена причина отключения прокрутки -
не все браузеры на мобильном правильно работают с чатом.
Protocoder28.07.2020 09:40:28#ответить
Данный чат вообще для мобильных задуман не был - собственно по-этому он и не оптимизирован под них.

Однако, работал и в FF и в Chrome, если поставить галку совместимости с PC. Остальные браузеры не проверял, т.к. эти два самые распространенные.
Андрюха03.02.2023 23:18:40#ответить
штоб галочка автопрокрутчика не слетала на мобильных устройствах, удали строчку oAS.checked = false;
почти в самом низу кода и будет щщщастье)
Дмитрий26.08.2020 13:16:23#ответить
Почему у меня header появляется в чате??
Protocoder26.08.2020 15:20:05#ответить
Штатные телепаты в отпуске.
Что за header? Как выглядит?

Чат работает у десятков пользователей нормально, значит дело, скорее всего, в вашем хостинге.
Кевин26.08.2020 14:32:59#ответить
Здравствуйте, а как внедрить в чат заливку файлов?
Protocoder26.08.2020 15:17:36#ответить
Здравствуйте.
Данный чат для этого не предназначен.
Серик26.10.2020 01:51:21#ответить
Здравствуйте. Чат реально классный и простой. Я конечно не программист но кое что изменил и добавил смайлики, поле textarea заменил на contenteditable. Хотелось бы ваше мнение о доработках, ну и конечно если желаете код чата усовершенствовать.
Сережа26.05.2021 20:48:05#ответить
Как ты смайлики добавил?
BPOH26.11.2020 21:40:44#ответить
Как его сделать резиновым? чтоб он на мобильных девайсах нормально отображался
Protocoder27.11.2020 02:55:49#ответить
Для этого его нужно переверстать, либо подкрутить CSS.
Находите того, кто это умеет и он это сделает минут за 30.
Алекс29.11.2020 23:14:29#ответить
Очень здорово. Как редко взял, залил - и работает!!!!!
респект.
Тим21.12.2020 05:33:20#ответить
При замене значения CHATTRIM чат перестаёт функционировать. сообщения заносятся в базу, однако поле вывода самого чата - пустое
Тим21.12.2020 05:39:12#ответить
Прошу прощение, не сразу понял, что значение указывает на количество символов, а не количество строк... Тогда не подскажете, есть возможность ограничить чат на определенное кол-во сообщений? чтобы старые сообщения не отображались или даже удалялись
Protocoder21.12.2020 10:07:48#ответить
Чат ограничивается по длине количеством символов, как Вы правильно поняли.

Т.е. все сообщения, которые расположены после этой длины + если обрезка приходится не на конец последнего сообщения, то и оно тоже - будут удалены.

Ограничения по количеству сообщений у чата нет, т.к. цели были другие.
bro07.01.2021 21:09:58#ответить
Здравствуйте, а как убрать IP адрес, который пишется рядом с ником?
Protocoder08.01.2021 15:22:01#ответить
Здравствуйте.

Найти <span class="id">(' . $id . ')</span> и удалить.
Игорь13.02.2021 02:56:59#ответить
chatwin.php - работает, но сообщения символами (ромбики). После обновления страницы читаются нормально. .htaccess не помогает. chat.php - HTTP ERROR 500. Сервер Apache. Здорово, что у большинства работает...
Protocoder14.02.2021 14:46:16#ответить
По chatwin.php - у вас что-то с кодировкой на сервере, проверяйте по заголовкам, что отдает сервер в качестве кодировки.

Единственное, из-за чего chat.php может выдавать 500 - на хостинге у PHP не включено расширение "mbstring", о чем было написано в статье.
korniloff7521.02.2021 21:14:46#ответить
Очень круто, но растащить по файлам жс, пхп и ксс стоит. Также хочется видеть возможность обмена через чат фото и файлами. Понимаю, что автор этого делать не будет, так что буду выкладывать все изменения сюда -- https://github.com/kornil off75/flatChat.
korniloff7501.03.2021 23:56:29#ответить
Хотелось бы, чтобы автор посмотрел мой форк этого чата.
Protocoder02.03.2021 12:19:39#ответить
Поглядел - развивайте, почему бы и нет.
korniloff7502.03.2021 18:34:56#ответить
Интересно было бы ваше мнение.
Как я понял, мою ссылку удалили из поста, но надеюсь у себя сохранили.
Будет время и желание -- заходите по ней и напишите, что, на ваш взгляд, реализовано хорошо, а чего не хватает.
Protocoder03.03.2021 01:20:03#ответить
Ссылка ваша есть на гитхабе, на который есть ссылка в вашем комментарии выше.

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

Я создавал этот чат для совершенно другой задачи и требований - мне нужен был быстрый и очень простой чат, как по функционалу, так и по развертке - и он эту задачу полностью решает. И именно по-этому он и представляет собой всего один файл. В этом, собственно, его фишка и его популярность.
Олег11.03.2021 02:09:27#ответить
Здравствуйте, спасибо за чат.
Подскажите пожалуйста, можно ли сделать так, чтобы видно было лишь только одно, последнее сообщение?
Protocoder11.03.2021 09:46:24#ответить
Всегда пожалуйста.

Можно попробовать поиграться с параметром CHATTRIM, который задает максимальный размер пересылаемого куска чата - точно одно сообщение вряд-ли получится сделать, но, например, первые 5-10 вполне.

Главное помнить, что то, что управляется этим параметром - это вообще весь видимый кусок.
И, грубо говоря, если установить его равным 1-2 сообщениям, то после того как вы отправите свое новое сообщение - вы только его и будете видеть.

Если прямо хочется одно старое и все новые - то нужно модифицировать код, который занимается обрезкой. Он начинается с "if ( CHATTRIM )", там обрезается указанный размер и отбрасывается невалидный кусок, если обрезали не по границе сообщения. Можно вместо этого взять текущий файл с данными и с конца найти последнее старое сообщение и вернуть этот кусок.
Олег15.03.2021 03:14:22#ответить
Спасибо, буду пробовать.
Кстати, использую для себя на разных устройствах, когда нужно перекинуть какую-либо ссылку на другой комп.
ant10.04.2021 20:25:07#ответить
День добрый. Скажите, а где поменять, чтобы сделать темный стиль? Ну и фон какой поставить?)
Protocoder10.04.2021 21:56:20#ответить
Весь внешний вид задается через CSS, который живет в стилях страницы - можно и темную тему накрутить и любой фон поставить (даже в виде котенка) :)
ant11.04.2021 02:07:12#ответить
)) А возможно сделать размеры под блок сайта? А то такой вид не умещается.. и еще момент, когда ставим на сайт, то оно не корректно отображается(
Protocoder14.04.2021 00:59:24#ответить
Можно сделать все, что позволяет HTML/CSS/JS. Как и корректное отображение в окружении - хотя этот чат даже не был для этого предназначен.

И все это в - ваших руках - дерзайте.
Atsuko22.05.2021 21:46:53#ответить
Здравствуйте! Из-за того что эти файлы .php я не могу их открыть, превращают в .html а чат не работает, стоит стиль а наверху коды php и я ничего не могу поделать, можете ли Вы добавить zip Архив в нормальном html,css,js но что-бы пожалуйста не было php, потому что я не знаю и не умею открывать php файл в браузер. Заранее спасибо!
Protocoder25.05.2021 19:29:00#ответить
Без PHP этот чат работать не будет - он на нем написан.

PHP-файлы предназначены для открытия на сервере, а не в браузере.
index19.07.2021 05:11:16#ответить
Для тех кто размещает чат на сайте и при каждом посещении сайта вас перекидывает на чат уберите вот это:

// text.focus();
Mike09.08.2021 00:28:50#ответить
Огромная благодарность за хороший чат.
Разделил его по файлам. И внедрил в свой mvc контроллер. Все отлично работает.
В процессе тестирования нашел проблему:
Если в чате только появились первые сообщения и еще есть пустое место в <div id="msgsDialog" class="block"> при клике мышкой мимо сообщения в пустое место в textarea name="text" копируется все содержимое html документа.
В объявлении функции msgs.onclick я исправил проверку if ( s ) на if ( s.className.indexOf( "msg" ) >= 0 ).
Protocoder09.08.2021 21:01:01#ответить
Спасибо за фидбэк - поправил.

"if ..." нужно заменить на "if ( s && s.className.indexOf( "msg" ) >= 0 ) ..." чтобы было ну совсем уж правильно.
Сергей27.08.2021 12:24:36#ответить
Добрый день!

Чат на UTF-8 работает без проблем! Но не могу понять как именно на UTF-8 сделать звуковое оповещение о приходе нового сообщения. Может подскажете КАК?
Protocoder28.08.2021 13:00:14#ответить
Добрый.
Там есть галочка снизу - "звук" - будет воспроизводится звук при появлении нового сообщения.
Сергей28.08.2021 14:51:44#ответить
Спасибо! Галочка стоит. Это ноут, как оказалось, не воспринимает слабые звуки. Ещё раз спасибо за чатик!

Не подскажете, что за чат, в котором мы общаемся?
Protocoder31.08.2021 22:09:58#ответить
Всегда пожалуйста.

Это не чатик, это комментарии моего сайта, написанные мной-же )
Сергей01.09.2021 14:19:50#ответить
Неплохо сделано! Мне понравилось. Можете поделиться? Хотелось бы что либо похожее у себя на сайте установить. Обещаю поставить ссылку на видном месте на Ваш сайт. Сайты разной тематики и проблем Вам не создадут.

Я не обижусь. если откажете.
Protocoder02.09.2021 10:53:50#ответить
Поделиться не могу, т.к. это часть движка сайта, ее так вот просто "выкусить" не получится, но можно подглядеть мой CSS и сделать точно также )
name09.09.2021 16:46:19#ответить
<img src="\" onerror="alert(1);"> в нике выводится в документ как тэг.

Никнейм не проверяется, как сообщение, короче говоря xss, исправьте, пожалуйста)
Protocoder09.09.2021 20:11:31#ответить
Да... вот что бывает когда с win1251 на UTF-8 переводишь :)
Ник экранировался только для того, что бралось из куки.

Спасибо за репорт - обновил все (старую версию тоже, хоть там и не было XSS - чтобы было единообразно).
name08.10.2021 23:43:05#ответить
Красава, что поправил, только не нашел где качать версию 09.09.21, либо ты подпись забыл отредачить. Проект клёвый.
Protocoder10.10.2021 15:14:44#ответить
Да, забыл подправить даты, сейчас обновил.

Т.е. то, что сейчас выложено в секции для скачивания - это самая последняя версия.
why24.09.2021 00:28:24#ответить
чат просто совершенен. спасибо.
Protocoder10.10.2021 15:14:31#ответить
Благодарю)
test13.10.2021 23:20:48#ответить
Привет, я в чате свой ник прописал, другой чел такой же прописал, так и общались (так не должно быть, типа такой ник пока занят) и второе, зашел другой чел и начал матюгатся, в место мата либо ***** должны быть, либо мини админка и бан по ip. Это как моё личное желание, сам чат на пять баллов, спасибо.
Protocoder14.10.2021 00:35:36#ответить
Всегда пожалуйста.

Насчет того, что написали - у меня таких задач не стояло, чат делался максимально легким и для своих.

Для отличия одинаковых ников у каждого справа в сообщении есть его IP-адрес.
Роман14.10.2021 18:48:13#ответить
Крутой чатик) то что нужно! Спасибо! :))) (p.s в 90х за такой чатец бы с руками отрывали)))
помню были php чат Дмитрия Бородина, voodoo чат, и т.д , ну это крупные, а такие малявки тоже всегда пользваплись спросом на маленьких сайтах
Геннадий17.11.2021 15:09:21#ответить
Добрый день. Не подскажете как залить чатик на сайт? Я начинающий, поэтому не особо понимаю. Если по этапно, то буду очень благодарен. А так у меня киш миш получается))))
Protocoder17.11.2021 18:46:26#ответить
Подсказать не смогу, так как видов и типов хостинга, как и движков сайтов - вагон и маленькая тележка. И каждый со своими особенностями. Если у хостинга есть техподдержка - советую обратиться к ним.

А вообще, если сферический конь в вакууме, то:
1. зарегистрировать доменное имя
2. настроить доменное имя на IP хостера, подождать регистрации (до 24 часов)
3. создать сайт у хостера
4. настроить сертификат и редирект https, если нужно
5. включить кодировку UTF-8 для сайта
6. включить на сайте PHP версии >= 5
7. включить в PHP расширение mbstring
8. залить файл чата в корневую директорию сайта и переименовать его в index.php
9. при необходимости настроить .htaccess если веб-сервер Apache или nginx.conf, если Nginx, чтобы они открывали по-умолчанию index.php через интерпретатор PHP

После выполнения всех этих пунктов, чат должен стать доступен по доменному имени из п1.

Если-же требуется именно ВСТРОИТЬ чат в движок сайта - то тут только спец вам в помощь.
Чайник08.12.2021 16:49:05#ответить
Здравствуйте! Подскажите строки по которым у вас идет проверка и обновление чата. Как я понял, если файл не менялся, то и обновления нет. Спрашиваю потому, что пытаюсь заменить setInterval('show()',1000 ); . Можете написать пример для чайников?
Protocoder09.12.2021 10:08:50#ответить
Здравствуйте. Опросом чата занимается функция poll, самим обновлением занимается функция refresh, вызываемая из poll. Что за "setInterval('show()',1000 );" - не в курсе.
Чайник09.12.2021 12:47:02#ответить
function show() { { $.ajax({ url: "refresh.php", success: function ( html ) { $("#content").html( html ); } } ); } $( function() { show(); setInterval( show, 1000 ); } );

В файле refresh.php просто кусок кода, который динамически обновляется каждую секунду. И это раздражает если честно) Для пользователя это будет заметно если он захочет выделить текст. Выделение будет сбрасываться т.к. блок обновляется) Не могу пока придумать как это обойти...
Protocoder09.12.2021 13:32:16#ответить
Это не код чата, а код не понятно чего (причем, написано очень плохо - я его переписал до вменяемого состояния)

Что до чата - он смотрит, был ли обновлен файл (по дате последнего изменения) - и только если был, он подгружает его.

Здесь тема по чату, давайте оффтопить не будем.
И консультации по программированию - извините - я тоже не оказываю.
Юрий08.12.2021 17:21:21#ответить
Добрый день! Подскажите, есть ли возможность владельцу/модератору чата удалять ненужные записи?
Protocoder09.12.2021 10:05:16#ответить
В самом интерфейсе чата - нет, но можно на сервере отредактировать историю чата - это обычный html файл.
Александр04.04.2022 23:08:57#ответить
Здравствуйте. Очень классный мини чат! Спасибо за код. Подскажите как поставить время в сообщении с учетом часового пояса?
Protocoder05.04.2022 00:36:35#ответить
Приветствую! Рад, что понравилось :)

Ищите "date( "d.m.Y H:i:s" )" - именно это отвечает за формирование времени в сообщении.
Однако данная инструкция формирует время с тем часовым поясом, который указан в конфигурации сервера PHP. И, по идее, если нужен другой часовой пояс, то надо не в скрипте менять что-то, а в настройках сервера, т.к. это правильный путь.
Александр05.04.2022 13:52:25#ответить
Здравствуйте. Спасибо за подсказку касаемо вывода времени в нужном часовом поясе. Может кому то понадобиться:
date_default_timezone_set ("UTC"); // Устанавливаем часовой пояс по Гринвичу
$time = time(); // Вот это значение отправляем в базу
$offset = 5; // Допустим, у пользователя смещение относительно Гринвича составляет +5 часов
$time += 5 * 3600; // Добавляем 5 часов к времени по Гринвичу

//заменяем date("d.m.Y H:i:s") на date("d.m.Y H:i:s", $time);
// Добавлением переменной $time выводим время пользователя, согласно его часовому поясу
Может коряво получилось т.к. я не программист, но работает.
Спасибо за код еще раз!
Protocoder05.04.2022 14:56:28#ответить
Все гораздо проще:

//это тот пояс, в котором будет жить сервер (локальное время)
//ставить надо в самом начале скрипта, если не хочется настраивать на сервере
date_default_timezone_set("Europe/Moscow");

time() + date( "Z" ); //это вернет UTS для локального времени

time(); //это вернет UTS для GMT, или так называемый UTC

echo( gmdate( "d.m.Y H:i:s" ) ); //это напечатает GMT-дату и время

echo( date( "d.m.Y H:i:s" ) ); //это напечатает локальную дату и время
Александр05.04.2022 20:57:27#ответить
Добрый вечер. Спасибо большое за разъяснения. Вставил Ваш чат во фрейме (стандартный модуль обертки) на сайт под Джумла. Все функционирует на ура, только после обновления страницы или переходе на другую страницу обновленная или новая страница сдвигается по горизонтали до фрейма чата. Возможно что то не так при установке, но пока не могу определить. Еще раз спасибо за Ваши труды.
озон09.05.2022 16:16:44#ответить
Автор спасибо за труды. Подскажи почему все время слетает автопрокрутчик
Protocoder16.05.2022 19:35:19#ответить
Подсказать не смогу т.к. у меня такого не наблюдается.

Возможно что-то с браузером или дополнениями к нему.

Если браузер мобильный - там вообще много чего может быть, ибо этот чат не для мобильных устройств.
Андрюха03.02.2023 23:08:37#ответить
штоб галочка автопрокрутчика не слетала на мобильных устройствах, удали строчку oAS.checked = false;
почти в самом низу чата и будет щщщастье)
Супер16.05.2022 13:40:50#ответить
Спасибо большое за такой замечательный скрипт чата, за подход, за красивый блог.

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

Чтобы её не видели:
- нечайно зашедшие другие пользователи (запаролить файл? подскажете как?)
- любопытные админы хостера (это, наверное, невозможно)
- чтобы страница не выскочила в seo поиске (это примерно помню как закомментировать)
Protocoder16.05.2022 19:27:18#ответить
Запаролить файл можно средствами веб-сервера.

Для Apache это можно сделать через .htaccess, лежащий в каталоге с чатом, добавив нечто такое:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /путь до файла с паролями/.htpasswd
Require valid-user

Аналогичное можно сделать и для других вебсерверов - nginx, lighthttpd и т.д. - читать гугл.

От админов хостера можно скрыться добавив шифрование сообщений на клиенте/сервере - но это достаточно сложная, хотя и решаемая задача.

Чтобы страница не выскочила в seo поиске - закройте ее паролем, или используйте robots.txt
Эл Ипатов23.05.2022 11:22:57#ответить
Возможно, изложенный мной ниже вопрос-просьба уже вами рассмотрен, но просмотреть такое количество сообщений не хватило сил. Пожалуйста, поясните как можно убрать "старые" сообщения в чате... С уважением, Эл Ипатов
Protocoder24.05.2022 10:15:21#ответить
Файл с сообщениями представляет собой обычный HTML - можно редактировать его самостоятельно любым текстовым редактором (блокнот, notepad++ и тд).

Кроме того, в самом скрипте есть переменная, отвечающая за максимальную длину этого файла - в этом случае файл будет уменьшаться автоматически, теряя самые старые сообщения.
Эл Ипатов27.05.2022 00:59:47#ответить
Спасибо. Сейчас и займусь...
Пьяный Шрек19.07.2022 18:52:06#ответить
Прикольно
Игорь20.07.2022 15:23:38#ответить
Чат классный, с php туговато у меня, но может подскажите как добавить смайлы?

Пробывал но при отправке выдаёт ошибку сервера 400
Protocoder21.07.2022 19:29:18#ответить
Смайлы в виде UTF-эмодзи и так должны работать на UTF-версии чата.
Если при них 400 ошибка выдается - надо смотреть настройки сервера и PHP - правильно-ли сконфигурированы они на UTF-8.

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

У меня пока такого в планах на этот чат не предвидится - я текстовыми смайлами пользуюсь всегда.
Александр04.10.2022 18:10:40#ответить
Помогите решить проблему с "NONMODIFIED" ? Появляется через некоторое время работы.
Protocoder14.10.2022 21:34:06#ответить
Вообще, NONMODIFIED - это cерверная сторона сообщает чату, что новых сообщений нет.
И это никуда выводиться на экран не должно, ибо это отдельный POST-запрос.

Единственное, что могу предложить - если это таки появляется на экране - откройте после этого консоль разработчика и гляньте нет ли там каких ошибок.
Михаил02.11.2022 22:43:23#ответить
Добрый день, почему то бесконечно воспроизводит оповещение о новом сообщении каждый раз когда срабатывает REFRESHTIME
Protocoder25.01.2023 18:55:47#ответить
Нужно больше данных - в каком браузере/системе? При каких условиях?

Ибо у большинства все нормально работает - значит конкретно ваш сетап чем-то отличается.
Сергей03.12.2022 14:31:13#ответить
Большое спасибо, очень пригодился
Мужик02.02.2023 12:16:41#ответить
Обновляется постоянно сам и звук воспроизводит при обновлении, а ещё меню с хедера туда затащил, прям в чат где текст. Сообщения отправляются и сам скрипт работает, но не ровно.
Protocoder02.02.2023 14:29:41#ответить
Значит что-то не так настроили на хостинге или внесли какие-то изменения на страницу с чатом, которые с ним конфликтуют. У меня и кучи других пользователей он абсолютно нормально отрабатывает.
Грет03.03.2023 19:40:53#ответить
Здравствуйте. Чат хороший. При отправке сообщения почему то в чат еще добавляется и контент сайта в чат?
Protocoder04.03.2023 22:44:52#ответить
Здравствуйте. Можно по четче описать что конкретно происходит? Какой контент добавляется в чат? Как выглядит?
Дмитрий20.03.2023 10:31:48#ответить
Здравствуйте! Огромное СПАСИБО за чат! Краткость - сестра таланта!
Что бы я изменил/добавил:
1. Ширина, на высоком разрешении нечто узенькое в центре экрана, может можно вычислять и подстраиваться под браузер? Мне кажется #wrapper {width: 80%; - даже так гораздо лучше (имхо).
2. Возможность постить файлы и картинки. Файлики отображались бы в строке иконками (кликнул - загрузил), а картинки миниатюрами (кликнул - посмотрел, там ссылка на загрузку). Это серьезный вклад в обмен данными между собеседниками.
3. Для первого поста или длительного перерыва простенькую (как у Вас) капчу
4. Автоматом при длительном отсутствии активности (три дня? потеря мысли или другая тема/собеседник) перемещать все в хистори (по времени последней записи в лог или доп. кнопкой?). Соответственно добавить ссылку или кнопку читать (искать) в хистори. Ну и поменять местами имя с датой на дату ("Y/m/d H:i:s" - даже так проще сортировать в поиске, если что) с именем
Protocoder21.03.2023 19:19:20#ответить
Пожалуйста.
Вы всегда можете реализовать все свои хотелки - код чата открытый и очень простой.

Я же, по описанным выше причинам, всего этого не делаю. Это максимально простой текстовый чат без наворотов.
Чувак23.03.2023 09:34:00#ответить
Стиль не очень. И маленький чат. Не подгоняется под экран страницы браузера.
Protocoder23.03.2023 18:07:07#ответить
У каждого фломастеры разные :)

Стиль сами можете подогнать под себя - исходники простые и понятно структурированные.
Андрей20.05.2023 13:59:26#ответить
Привет, отличный чат. Вот может уже отвечали - сейчас версия работает на PHP 7.3, а если установить 8.2 - то чат уже warning выдает. Это все из-за mbsting? Есть ли решение или может установить директивы как "костыль"? Очень жду ответа. Спасибо заранее.
Protocoder25.05.2023 11:10:25#ответить
Не проверял его на 8-ке, но если выдает варнинг, то по тексту варнинга Вы можете определить что за проблема и пофиксить ее.
Александр05.07.2023 01:34:00#ответить
Добрый день.
Помогите пожалуйста. Подключил к чату смайлы.
Ввожу текст в <div id="sendDialog">, передаю в <div id="sendDialog"> смайл, отображается правильно - как картинка, но если по кнопке "отправить" в <div id="msgsContent"> отображается только текст без смайла.
В блоке php для переменной $msg сделал </div><textarea name="text" id="txt_txt1">' . $text . '</textarea></div>' . Все равно не помогает.
Если отправить только смайл без текста, то "ошибка сервера 400". Если в chat.db вписать код смайла и обновить страницу чата, то смайл отображается как картинка вместе с основным текстом. Если я правильно понимаю, то сначала пишется в chat.db, а уже оттуда читается в поле чата, только я очень хилый кодер на js и не могу понять, где происходит запись в файл chat.db.
Может есть возможность какую нибудь идею подкинуть как обойти эту ошибку 400. Похоже, что это с php связано.
Protocoder05.07.2023 19:52:26#ответить
Добрый.

В чате введенный текст очищается в фии cleanText, смайлы это составные UTF-8 последовательности - может быть в этом дело.

Файл чата пишется строкой "file_put_contents( DBFILE, $msg, FILE_APPEND );".

Остальное сами пожалуйста - чат задумывался максимально простым, без каких-либо смайлов и тд. и таким и останется.
Александр05.07.2023 23:30:55#ответить
Добрый вечер. Да, конечно, это я уже сам допиливаю, чат очень хороший, спасибо за консультацию.
Игорь06.07.2023 08:59:39#ответить
Вот такая надпись висит вверху . . .

Warning: filemtime() [function.filemtime]: stat failed for . . . . . www/chat.db in . . . . . . www/chat-0.php on line 149

Можете подсказать что сделать?
Как убрать эту надпись?
Protocoder06.07.2023 10:02:46#ответить
Поставить @ перед filemtime в указанной строке, либо настроить display_errors и error_reporting.
Игорь06.07.2023 10:13:30#ответить
Понял, спасибо! Попробую . . .

Хорошего дня!

Всё заработало, спасибо!
Дмитрий16.10.2023 12:07:59#ответить
Добрый день! Можно ли использовать данный чат для обмена тектовыми пакетами данных между несколькими приложениями, установленными на разных компьютерах? Что при этом можно урезать в коде?
Protocoder18.10.2023 15:57:24#ответить
Добрый.
Это веб-чат, он работает в браузере.
Про какие приложения еще идет речь?

Если Вы его хотите встроить в приложение через WebView - он так и останется веб-чатом - по-этому работа его всецело будет зависеть от настроек веб-сервера, к которому он будет обращаться. Встроите в 3 приложения, при этом указав один вебсервер - чаты всех 3 приложений будут общаться друг с другом.
Valentin Sh08.11.2023 16:43:41#ответить
Protocoder, привет. Респект за простоту, чат хорош. Давайте звук добавим, на входящие, при выключенном экране мобильного устройства, при условии, что браузер просто свернут например, но открыт во вкладке. Например ждем ответ, экран погас...потом тиу тиу, ну и ты понимаешь что наконец-то написали ответ. ЗЫ Всю переписку не перечитывал тут, может кто писал уже об этом, сорян если что

звук есть))) просто на устройстве был выключен)))

через пару минут, когда экран уже заблокировался, сообщения не слышны, и по чату бегут такие полосочки если разблокировать посмотреть, то есть чат засыпает через какое-то время, если ты не в браузере
Protocoder09.11.2023 14:42:52#ответить
Привет.

Во-первых - чат не рассчитан на мобилки.

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

В-третьих - исходники открыты - вы можете модернизировать их так, как вам необходимо.

Я же здесь держу чат в максимально простом и универсальном состоянии, без ненужных для его работы наворотов.
кто - то09.11.2023 03:56:17#ответить
Здравствуйте! Прочитал вроде все комментарии но не нашёл, что делать если сообщение не отправляется? нажимаю кнопку отправить в чат ничего не добавляется, а на другом устройстве звук воспроизводится, ISS 10 PHP 8.2.12 MYSQL 8.0.35.0 перед этим была ошибка 500 но она сама пропала. опять посмотрел все комментарии закомментировал строки 761 771 но не помогло, в файле chat.db после отправки сообщения ничего не появляется. Чат отличный долго им пользуюсь решил переставить на windows server 2022 datacenter с open server panel и скачал последнюю версию и вот такая ошибка появилась решил попробовать чат который был все равно не работает. Будут обновления?
Protocoder09.11.2023 14:41:26#ответить
Здравствуйте.

Разбирайтесь со своим хостингом и настройками PHP (проверяйте права на файлы и тд) - чат тут абсолютно не при чем.

Обновления будут тогда, когда в них реально появится необходимость.
На данный момент чат польностью работоспсобен в FF/Chrome и форках на их основе.
Никакого доп.функционала не планируется.
TS16.05.2024 05:33:00#ответить
У нас на Ubuntu 22 аналогично - Server error 500.
На Ubuntu 16 работает без проблем.
Пока разбираемся...
Татьяна12.05.2024 08:59:01#ответить
Здравствуйте, скажите пожалуйста, как почистить историю?
Protocoder14.05.2024 12:22:38#ответить
Просто удалить/отредактировать файл, указанный в константе "DBFILE".
По-умолчанию это файл "chat.db", который лежит в тойже папке, что и чат.
Татьяна18.05.2024 13:35:39#ответить
Спасибо большое!!!
Чат очень понравился.
Vitalik13.08.2024 15:03:09#ответить
Не работает буква ?
Protocoder14.08.2024 17:18:18#ответить
Если в самом сообщении - то проверяйте настройку хостинга.

Если в никнейме - то так и должно быть - там разрешены только пробелы, русские и английские буквы и цифры. Хочется туда что-то еще - модифицируйте функцию cleanName - именно она ответственна за очистку.
Олег13.09.2024 00:33:42#ответить
Вообще кайф! Скрипт просто бомба!
Написать комментарий