Найти в Дзене
КТ3102А

0chat

Я долго бродил по репозиторию Debian GNU/Linux, искал простой чат для локальной сети, который использует в качестве баз данных обычные текстовые файлы. Знаю, многие скажут, что лучше не чат, а jabber или irc - согласен, но будет ещё условие - в качестве клиента должен использоваться обычный браузер. В сети я нашёл много таких чатов. Для того, чтобы их поставить, надо сначала распаковать архив на сервер и поставить нужные права доступа. Я не люблю ставить программное обеспечение не из пакетов и не из репозитория. А в существующем на данный момент времени репозитории Debian GNU/Linux я нашёл такие пакеты, как phpbb3 и drupal6, что не совсем то, что мне надо. А чата я не нашёл. Может быть я не очень хорошо его искал? Было принято решение написать чат на PHP самостоятельно и собрать его в deb-пакет. Скажу сразу, я не программист.

Так как чат простой, то кода в нём немного. Я дал чату имя - 0chat. Чат состоит из нескольких файлов - файл с текстом лицензии (я применил GNU GPL версии 3, его можно скачать на сайте GNU), файл с текстом для пользователя от сопровождающего данный пакет (что-то наподобие справки), файл с кодом, который принимает данные от пользователя, файл с кодом, который отображает накапливаемые данные и файл с кодом, который объединяет все эти файлы в чат.

Листинг1 (index.php, файл с кодом, который объединяет все эти файлы в чат):

<html>

<meta charset="utf-8">

<head>

<title>

0chat

</title>

</head>

<frameset rows="50%,*">

<frame name="chat1" src="chat1.php">

<frame name="chat2" src="chat2.php">

</frameset>

</html>

Данный код создаёт окно, горизонтально разделённое на две одинаковые части.

Листинг2 (chat2.php, файл с кодом, который отображает накапливаемые данные):

<html>

<meta charset="utf-8">

<meta http-equiv="refresh" content="10">

<?php

$chat2=file_get_contents("log1.txt");

echo $chat2;

?>

</html>

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

Листинг3 (chat1.php, файл с кодом, который принимает данные от пользователя):

<html>

<meta charset="utf-8">

<a href="0chat1.html">

0chat

</a>

<br>

<form method="post" action="chat1.php">

<input type="text" name="chat1" size="120" maxlength="2000" value="">

<br>

<input type="reset" value="delete">

<input type="submit" value="ok">

<br>

<?php

$fajl1="log1.txt";

$tekst1=$_REQUEST["chat1"];

$data1=`date`;

$chat1="<br>".">".$data1.">".$tekst1;

echo $chat1;

$fajl3=10000;

$fajl2=filesize($fajl1);

if($fajl2>$fajl3)

{

unlink($fajl1);

}

file_put_contents($fajl1,$chat1,FILE_APPEND);

?>

</html>

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

gpl.txt и 0chat1.html - это файлы лицензии и информации от сопровождающего данный пакет, их я не привожу, так как в работе чата они участия не принимают.

Файл log1.txt - файл лога чата, его создавать не нужно, его создаст код из файла chat1.php.

Эти файлы я разместил на сервере в каталоге 0chat и поставил права доступа: на каталог - 777, на файлы - 755, log1.txt я не трогал, он был создан автоматически с нужными правами доступа.

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