<div id="chat"></div>
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="name" class="col-sm-3 col-sm-offset-1 control-label">Ваше имя для чата</label>
<div class="col-sm-4 ">
<input type="text" class="form-control" id="name" placeholder="Введите ваше имя" name="name"/>
</div>
</div>
</form>
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="text" class="col-sm-3 col-sm-offset-1 control-label">Ваше сообщение</label>
<div class="col-sm-7 ">
<textarea class="form-control" rows="3" id="text" placeholder="Введите ваш сообщение" name="text"></textarea>
</div>
</div>
</form>
<div class="col-sm-offset-4 col-sm-4 col-xs-offset-2 col-xs-7">
<button id="btnSend" class="submit btn btn-primary col-sm-12 col-xs-12 btn-lg">Отправить сообщение</button>
</div>
$('#btnSend').click(function(elem){
//при клике получаем сообщения из полей с ид name и text
var name = $('#name').val();
var text = $('#text').val();
//и методом POST в формате json отправляем их в add.php
$.post('add.php', {name: name, text: text}, function(){
//поле text стираем(тоесть делаем пустым '')
$('#text').attr('value', '');
});
});
<?php
$name = $_POST['name'];//получили данные
$text = $_POST['text'];
if(($name != '') && ($text != '')){
$strings = file('messages.txt');
//если строк в файле messages.txt > 100
if(count($strings)>100){
//получаем все строки из файла в виде нумерованного массива
$textarr=file('messages.txt');
$arr=array_slice($textarr, -5);
//переписываем данные в файл записываем только
//последние 5 строк массива
$f = fopen('messages.txt', 'w+');
//в цикле записываем данные в файл,
//каждое значение массива на новой строке в файле
foreach($arr as $ar){
$f = fopen('messages.txt', 'a+');//открыли файл
fwrite($f, $ar);//запись
fclose($f);//закрыли файл
}
}
$f = fopen('messages.txt', 'a+');//открыли файл
fwrite($f, date('Y-m-d H:i:s') . "___");//запись
fwrite($f, $name . "___");//запись в файл
fwrite($f, $text . "\n");//запись и добавили конец строки
fclose($f);//закрыли файл
}
?>
function chatRequest(){
// Отправка запроса методом POST.
$.post('get_json.php', {maxId: _maxId}, chatResult, 'json');
}
<?php
$maxId = $_POST['maxId'];
$strings = file('messages.txt');
$messages = array();
//если maxId меньше кол-ва строк в файле(count($strings)),
// то мы прибавляем +1 к i ,
for($i = $maxId; $i < count($strings); $i++)
{
//берём строку с номером i разбиваем её по уникальному разделителю
//'___' и делаем из неё именованные элементы массива
$string = explode('___', $strings[$i]);
$arr['date'] = $string[0];
$arr['name'] = $string[1];
$arr['text'] = $string[2];
//упаковываем всё в массив messages[]
$messages[] = $arr;
}
//переводим массив в json и отправляем
echo json_encode($messages);
?>
function chatResult(msgs){
// Добавление новых сообщений в массив.
for(var i = 0; i < msgs.length; i++)
{
var m = new Object();
m.dt = msgs[i]['date'];
m.name = msgs[i]['name'];
m.text = msgs[i]['text'];
_messages.push(m);
_maxId++;
}
// Вывод массива сообщений.
var html = '';
//пока сообщений в фаиле меньше 5
if(_messages.length<=5){
for (var i = _messages.length - 1; i >=0; i--)
{
var m = _messages[i];
//проверка что сообщение чётное
if (i%2==1){
//вёрстка
html +='<div class="qbox clearfix"><div class="bname col-md-2 pull-left center-block"><p>'+m.name+'</p></div>';
html +='<div class="bnameprobel col-md-10 pull-left"></div><div class="clearfix"></div><div class="col-md-2 pull-left"><img src="/iconman.png" class="img-responsive col-md-10 col-md-push-1" alt=""></div>';
html +='<div class="bnameprobel col-md-10 pull-left"><blockquote class="post bg-success pull-left"><p >'+m.text+'<span class="data">'+m.dt+'</span></p></blockquote></div></div>';
}else{
//вёрстка
html +='<div class="qbox clearfix"><div class="bname col-md-2 pull-right center-block"><p>'+m.name+'</p></div>';
html +='<div class="bnameprobel col-md-10 pull-right"></div><div class="clearfix"></div><div class=" col-md-2 pull-right"><img src="/iconman.png" class="img-responsive col-md-10 col-md-push-1" alt=""></div>';
html +='<div class="bnameprobel col-md-10 pull-right"><blockquote class="post bg-info pull-right"><p >'+m.text+'<span class="data">'+m.dt+'</span></p></blockquote></div></div>';
}
}
//сообщений в фаиле больше 5
}else{
for (var i = _messages.length - 1; i >= _messages.length-5; i--){
var m = _messages[i];
//проверка что сообщение чётное
if (i%2==1){
//вёрстка
html +='<div class="qbox clearfix"><div class="bname col-md-2 pull-left center-block"><p>'+m.name+'</p></div>';
html +='<div class="bnameprobel col-md-10 pull-left"></div><div class="clearfix"></div><div class="col-md-2 pull-left"><img src="/iconman.png" class="img-responsive col-md-10 col-md-push-1" alt=""></div>';
html +='<div class="bnameprobel col-md-10 pull-left"><blockquote class="post bg-success pull-left"><p >'+m.text+'<span class="data">'+m.dt+'</span></p></blockquote></div></div>';
}else{
//вёрстка
html +='<div class="qbox clearfix"><div class="bname col-md-2 pull-right center-block"><p>'+m.name+'</p></div>';
html +='<div class="bnameprobel col-md-10 pull-right"></div><div class="clearfix"></div><div class=" col-md-2 pull-right"><img src="/iconman.png" class="img-responsive col-md-10 col-md-push-1" alt=""></div>';
html +='<div class="bnameprobel col-md-10 pull-right"><blockquote class="post bg-info pull-right"><p >'+m.text+'<span class="data">'+m.dt+'</span></p></blockquote></div></div>';
}
}
}
//выводим все сообщения
$('#chat').html(html);
}
// Запрашиваем сообщения каждые 2 секунды
setInterval(chatRequest, 2000);
var _maxId;
var _messages;
$(document).ready(function(){
// Инициализация.
_maxId = 0;
_messages = [];
chatRequest();
// Запрашиваем сообщения каждые 2 секунды
setInterval(chatRequest, 2000);
$('#btnSend').click(function(elem){
//при клике получаем сообщения из полей с ид name и text
var name = $('#name').val();
var text = $('#text').val();
//и методом POST в формате json отправляем их в add.php
$.post('add.php', {name: name, text: text}, function(){
//поле text стираем(тоесть делаем пустым '')
$('#text').attr('value', '');
});
});
});
function chatRequest()
{
// Отправка запроса методом POST.
$.post('get_json.php', {maxId: _maxId}, chatResult, 'json');
}
function chatResult(msgs){
// Добавление новых сообщений в массив.
for(var i = 0; i < msgs.length; i++)
{
var m = new Object();
m.dt = msgs[i]['date'];
m.name = msgs[i]['name'];
m.text = msgs[i]['text'];
_messages.push(m);
_maxId++;
}
// Вывод массива сообщений.
var html = '';
//пока сообщений в фаиле меньше 5
if(_messages.length<=5){
for (var i = _messages.length - 1; i >=0; i--)
{
var m = _messages[i];
//проверка что сообщение чётное
if (i%2==1){
//вёрстка
html +='<div class="qbox clearfix"><div class="bname col-md-2 pull-left center-block"><p>'+m.name+'</p></div>';
html +='<div class="bnameprobel col-md-10 pull-left"></div><div class="clearfix"></div><div class="col-md-2 pull-left"><img src="/iconman.png" class="img-responsive col-md-10 col-md-push-1" alt=""></div>';
html +='<div class="bnameprobel col-md-10 pull-left"><blockquote class="post bg-success pull-left"><p >'+m.text+'<span class="data">'+m.dt+'</span></p></blockquote></div></div>';
}else{
//вёрстка
html +='<div class="qbox clearfix"><div class="bname col-md-2 pull-right center-block"><p>'+m.name+'</p></div>';
html +='<div class="bnameprobel col-md-10 pull-right"></div><div class="clearfix"></div><div class=" col-md-2 pull-right"><img src="/iconman.png" class="img-responsive col-md-10 col-md-push-1" alt=""></div>';
html +='<div class="bnameprobel col-md-10 pull-right"><blockquote class="post bg-info pull-right"><p >'+m.text+'<span class="data">'+m.dt+'</span></p></blockquote></div></div>';
}
}
//сообщений в фаиле больше 5
}else{
for (var i = _messages.length - 1; i >= _messages.length-5; i--){
var m = _messages[i];
//проверка что сообщение чётное
if (i%2==1){
//вёрстка
html +='<div class="qbox clearfix"><div class="bname col-md-2 pull-left center-block"><p>'+m.name+'</p></div>';
html +='<div class="bnameprobel col-md-10 pull-left"></div><div class="clearfix"></div><div class="col-md-2 pull-left"><img src="/iconman.png" class="img-responsive col-md-10 col-md-push-1" alt=""></div>';
html +='<div class="bnameprobel col-md-10 pull-left"><blockquote class="post bg-success pull-left"><p >'+m.text+'<span class="data">'+m.dt+'</span></p></blockquote></div></div>';
}else{
//вёрстка
html +='<div class="qbox clearfix"><div class="bname col-md-2 pull-right center-block"><p>'+m.name+'</p></div>';
html +='<div class="bnameprobel col-md-10 pull-right"></div><div class="clearfix"></div><div class=" col-md-2 pull-right"><img src="/iconman.png" class="img-responsive col-md-10 col-md-push-1" alt=""></div>';
html +='<div class="bnameprobel col-md-10 pull-right"><blockquote class="post bg-info pull-right"><p >'+m.text+'<span class="data">'+m.dt+'</span></p></blockquote></div></div>';
}
}
}
//выводим все сообщения
$('#chat').html(html);
}
/*ф-я фильтрации*/
function myclear($dt){
$dt=stripslashes($dt);
$dt=strip_tags($dt);
$dt=trim($dt);
return $dt;
}
/*ф-я фильтрации*/
function myclear($dt){
$dt=stripslashes($dt);
$dt=strip_tags($dt);
$dt=trim($dt);
return $dt;
}
$name = myclear($_POST['name']);//фильтруем
$text = myclear($_POST['text']);
//было раньше
//$name = $_POST['name'];
//$text = $_POST['text'];
if(($name != '') && ($text != '')){
$strings = file('messages.txt');
if(count($strings)>100){
//получаем все строки из файла в виде нумерованного массива
$textarr=file('messages.txt');
$arr=array_slice($textarr, -5);
//переписываем данные в файл записываем только последние 3 строки массива
$f = fopen('messages.txt', 'w+');
//в цикле записываем данные в файл, каждое значение массива на новой строке в файле
foreach($arr as $ar){
$f = fopen('messages.txt', 'a+');//открыли файл
fwrite($f, $ar);//запись
fclose($f);//закрыли файл
}
}
$f = fopen('messages.txt', 'a+');//открыли файл
fwrite($f, date('Y-m-d H:i:s') . "___");//запись
fwrite($f, $name . "___");//запись в файл
fwrite($f, $text . "\n");//запись и добавили конец строки
fclose($f);//закрыли файл
}
Боты — специальные аккаунты в Telegram , созданные для того, чтобы автоматически обрабатывать и отправлять сообщения.
CodeIgniter - Фреймворк, на основе которого можно создать свою собственную систему управления контентом.
« Сентябрь 2024 » | ||||||
---|---|---|---|---|---|---|
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
Комментарии
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.