PHP

Shoutbox - миниЧат для Вашего сайта!

Хотели бы вы иметь на своем сайте мини-чат? Думаю, многие скажут "ДА". Сегодня мы рассмотрим замечательный мини-чат Shoutbox, он работает на php, mysql и jQuery. Прежде чем начать работу, посмотрите Демо (после советую до конца прочитать урок, дабы не делать поспешных выводов)

Не правда ли классно? Теперь о том, как такую вещь реализовать.

Скрипт для работы использует БД Mysql. Давайте создадим в базе таблицу shoutbox для упрощения задачи Вам и себе привожу готовый SQL-запрос:
CREATE TABLE `shoutbox` (
`id` INT( 5 ) NOT NULL AUTO_INCREMENT ,
`date` TIMESTAMP NOT NULL ,
`user` VARCHAR( 25 ) NOT NULL ,
`message` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `id` ) 
) CHARACTER SET = utf8;

Обрабатывает сообщения файл shoutbox.php. Найдите в нем следующие строки и отредактируйте:
define("HOST", "Ваш MySql-хост - обычно это localhost");
define("USER", "имя пользователя MySql");
define("PASSWORD", "пароль к вашей MySql ");
define("DB", "Имя БД");

Думаю, с этим сложностей быть не должно :) Еще пара настроек в этом же файле:
header ("Location: index.html");
$res = getContent($link, 50); 

header - Здесь мы отправляем нерадивых юзеров, которые пытаются напрямую вызвать работу файла, shoutbox.php на страницу index.html.
getContent($link, 50) - количество сообщений на страницу. В данном примере будет выбрано 50 последних сообщений.

Теперь в нужном месте вставляем форму отправки сообщения и div-контейнер, который будет содержать последние сообщения чата:
<form method="post" id="form">
	<table>
		<tr>
			<td><label>Ваше имя</label></td>
			<td><input class="text user" id="nick" type="text" MAXLENGTH="25" /></td>
		</tr>
		<tr>
			<td><label>Сообщение</label></td>
			<td><input class="text" id="message" type="text" MAXLENGTH="255" /></td>
		</tr>
		<tr>
			<td></td>
			<td><input id="send" type="submit" value="Отправить" /></td>
		</tr>
	</table>
	</form>
<div id="container">
<div class="content">
			<h1>Последние сообщения</h1>
			<div id="loading"><img src="css/images/loading.gif" alt="Загрузка..." /></div>
			<ul>
			</div>
</div>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="shoutbox.js"></script>

Обычная форма с тремя input. После формы идет div#container, пусть вас не смущает наличие одинокого тега p. Все сообщения выводяться в виде <p>Имя - сообщение</p> (см. файл shoutbox.php). И в конце мы подключаем jQuery и сам скрипт shoutbox.js (можете это сделать и традиционно между тегами head)

CSS здесь отвечает только за внешний вид чата. Поэтому подробно рассматривать его в этом уроке не будем. Просто не забудьте включить стили из файла css/general.css на вашу страницу, или, что еще лучше, сделайте индивидуальный дизайн. Единственное что стоит помнить, id и class из приведенного выше кода использует и скрипт shoutbox.js, поэтому если вы будете изменять имена id и class на свои, не забудьте сделать это также в shoutbox.js

На сегодня это все. Пусть этот урок станет для вас подарком на первомайские праздники, думаю, этот мини-чат вы найдете куда пристроить ;)

P.S. Для тех кто хочет из этого скрипта получить более полноценный чат, слегка доработаем оригинальный скрипт:

Смысл в том, что мы будем обновлять содержание окошка чата через определенное время. Для этого нам понадобится плагин, который существенно упростит задачу jquery.timers.js. Его подключаем как обычно, а в shoutbox.js добавляем следующие строки:
$(".content > p").everyTime(30000, function() {
		$.ajax({
			type: "POST", url: "shoutbox.php", data: "action=update",
			complete: function(data){
				loading.fadeOut();
				messageList.html(data.responseText);
				messageList.fadeIn("fast");
			}
		});
  
});

everyTime(30000) - время в милисекундах, через которое содержимое окна будет обновляться. В примере стоит 30 секунд.
Скачать плагин с исправленным shoutbox.js здесь. Демка работает по первоначальному варианту, но вы можете легко протестировать обновленный скрипт у себя на сайте.

P.P.S исправляем проблему букв "И" и "ш"
Я решил эти буквы просто заменить на их символы из "Таблица символов Unicode". Найдите строчку case "insert": (66-ая строка) в файле shoutbox.php и замените содержимое case на этот код: напишите следующее правило:
$message =  str_replace("ш", "&#1096;", $_POST['message']); 
$message = str_replace("И", "&#1048;", $message); 
$nick =  str_replace("ш", "&#1096;", $_POST['nick']); 
$nick = str_replace("И", "&#1048;", $nick);
echo insertMessage($nick, $message);

Решение достаточно простое: мы просто перед тем как новое сообщение добавить в БД, заменяем проблемные буквы на них же, но в символьном варианте
Теги:
Shoutbox, миниЧат
Добавлено: 03 Мая 2018 06:47:39 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...