Я долго бродил по репозиторию 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 я не трогал, он был создан автоматически с нужными правами доступа.
Если чат работает, то его уже можно собрать в пакет. Как собрать в пакет данные не привожу, их достаточно много в сети.