Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 16.08.2018
Сообщений: 61

Ограничить отправку сообщений пользователю до 5 с выводом оставшихся сообщений

23.11.2018, 16:21. Показов 1682. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В заголовке темы думаю всё понятно. Есть обычный чат, нужно, чтобы у пользователя было ограничение на количество отправляемых сообщений в количестве 5 и вывести на странице оставшиеся число. Ну и конечно заблокировать возможность отправки если число оставшихся сообщений равно 0.

Так выглядит база sql
SQL Скопировано
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
31
32
33
34
35
36
37
38
39
40
41
-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
-- 
-- Хост: localhost
-- Время создания: Ноя 16 2011 г., 13:39
-- Версия сервера: 5.0.18
-- Версия PHP: 5.1.6
-- 
-- БД: `chat`
-- 
 
-- --------------------------------------------------------
 
-- 
-- Структура таблицы `messages`
-- 
 
CREATE TABLE `messages` (
  `id` INT(5) NOT NULL AUTO_INCREMENT,
  `login` VARCHAR(200) NOT NULL,
  `message` VARCHAR(1000) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=19 ;
 
 
-- --------------------------------------------------------
 
-- 
-- Структура таблицы `users`
-- 
 
CREATE TABLE `users` (
  `id` INT(5) NOT NULL AUTO_INCREMENT,
  `login` VARCHAR(200) NOT NULL,
  `password` VARCHAR(400) NOT NULL,
  `name` VARCHAR(200) NOT NULL,
  `surname` VARCHAR(200) NOT NULL,
  `city` VARCHAR(200) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;
register.php
PHP Скопировано
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
 
//Проверяем пришли ли данные
if(isset($_POST['login']) && isset($_POST['password']))
{
//Записываем все в переменные
    $login=htmlspecialchars(trim($_POST['login']));
    $password=htmlspecialchars(trim($_POST['password']));
    $name=htmlspecialchars(trim($_POST['name']));
    $surname=htmlspecialchars(trim($_POST['surname']));
    $city=htmlspecialchars(trim($_POST['city']));
 
//Проверяем на пустоту
    if($login=="" || $password=="" || $name=="" || $surname=="" || $city=="")
    {
        die("Заполните все поля!");
    }
 
//Подключаем базу данных
    include("bd.php");
 
//Достаем из БД информацию о введенном логине
    $res=mysql_query("SELECT `login` FROM `users` WHERE `login`='$login' ");
    $data=mysql_fetch_array($res);
 
//Если он не пуст, то значит такой уже есть
    if(!empty($data['login']))
    {
        die("Такой логин уже существует!");
    }
 
//Проверяем длину пароля
    if(strlen($password)<7)
    {
        die("Длина пароля не может быть меньше 7 символов!");
    }
 
//Вставляем данные в БД 
    $query="INSERT INTO `users` (`login`,`password`,`name`,`surname`,`city`) VALUES('$login','$password','$name','$surname','$city') ";
    $result=mysql_query($query);
 
//Если данные успешно занесены в таблицу
    if($result==true)
    {
        echo "Вы успешно зарегистрированы! <br><a href='index.php'>На главную</a>";
    }
//Если не так, то выводим ошибку
    else
    {
        echo "Error! ----> ". mysql_error();
    }
}
?>
login.php
PHP Скопировано
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
31
32
33
34
35
36
37
<?php
 
//Если пришли данные на обработку
if(isset($_POST['login']) && isset($_POST['password']))
{
//Подключаемся к базе данных
    include("bd.php");
 
//Записываем все в переменные
    $login=htmlspecialchars(trim($_POST['login']));
    $password=htmlspecialchars(trim($_POST['password']));
 
//Достаем из таблицы инфу о пользователе по логину
    $res=mysql_query("SELECT * FROM `users` WHERE `login`='$login' ");
    $data=mysql_fetch_array($res);
 
//Если такого нет, то пишем что нет
    if(empty($data['login']))
    {
        die("Такого пользователя не существует!");
    }
//Если пароли не совпадают
    if($password!=$data['password'])
    {
        die("Введенный пароль неверен!");
    }
//Запускаем пользователю сессию
    session_start();
 
//Записываем в переменные login и id
    $_SESSION['login']=$data['login'];
    $_SESSION['id']=$data['id'];
//Переадресовываем на главную
    header("location: index.php");
}
 
?>
chat.php
HTML5 Скопировано
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<!-- Стили для блока с сообщениями!-->
<style>
#messages
{
    width:300px;
    height:150px;
    overflow:auto;
    border:1px solid silver;
}
</style>
 
<!--Подключаем Jquery!-->
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
 
<script type="text/javascript">
    //Загружаем библиотеку JQuery
    google.load("jquery", "1.3.2");
    google.load("jqueryui", "1.7.2");
    
    //Функция отправки сообщения
    function send()
    {
        //Считываем сообщение из поля ввода с id mess_to_add
        var mess=$("#mess_to_send").val();
        // Отсылаем паметры
       $.ajax({
                type: "POST",
                url: "add_mess.php",
                data:"mess="+mess,
                // Выводим то что вернул PHP
                success: function(html)
                {
                    //Если все успешно, загружаем сообщения
                    load_messes();
                    //Очищаем форму ввода сообщения
                    $("#mess_to_send").val('');
                }
        });
    }
    
    //Функция загрузки сообщений
    function load_messes()
    {
        $.ajax({
                type: "POST",
                url:  "load_messes.php",
                data: "req=ok",
                // Выводим то что вернул PHP
                success: function(html)
                {
                    //Очищаем форму ввода
                    $("#messages").empty();
                    //Выводим что вернул нам php
                    $("#messages").append(html);
                    //Прокручиваем блок вниз(если сообщений много)
                    $("#messages").scrollTop(90000);
                }
        });
    }
</script>
 
<table>
<tr>
<td>
<div id="messages">
</div>
</td>
</tr>
<tr>
<td>
<form action="javascript:send();">
<input type="text" id="mess_to_send">
<input type="button" value="Отправить">
</form>
</td>
</tr>
</table>
 
<script>
//При загрузке страницы подгружаем сообщения
load_messes();
//Ставим цикл на каждые три секунды
setInterval(load_messes,3000);
</script>
add_mess.php
PHP Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
//Проверям есть ли переменные на добавление
if(isset($_POST['mess']) && $_POST['mess']!="" && $_POST['mess']!=" ")
{
    //Стартуем сессию для записи логина пользователя
    session_start();
    //Принимаем переменную сообщения
    $mess=$_POST['mess'];
    //Переменная с логином пользователя
    $login=$_SESSION['login'];
    //Подключаемся к базе
    include("bd.php");
    //Добавляем все в таблицу
    $res=mysql_query("INSERT INTO `messages` (`login`,`message`) VALUES ('$login','$mess') ");
}
?>
load_mess.php
PHP Скопировано
1
2
3
4
5
6
7
8
9
10
11
<?php
//Подключаемся к БД
include("bd.php");
//Выбираем все сообщения
$res=mysql_query("SELECT * FROM `messages` ORDER BY `id` ");
//Выводим все сообщения на экран
while($d=mysql_fetch_array($res))
{   
    echo "<b><font color='black'>".$d['login'].":&nbsp;</font></b>".$d['message']."<br>";
}
?>
index.php
PHP Скопировано
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<html>
 
<title>Чат</title>
 
<head>
</head>
 
<body>
<?php
//Запускаем сессию для работы с кукис файлами
session_start();
//Если отсутствуют логин и айди,
//отображаем форму входа и регистрации
if(!isset($_SESSION['login']) || !isset($_SESSION['id']))
{
?>
<center>
<form action="login.php" method="POST">
<h3>Вход</h3>
Логин: <br> <input type="text" name="login">
<br>
Пароль: <br> <input type="password" name="password">
<br>
<input type="submit" value="Вход">
</form>
</center>
<?php
}
//Если сессия запущена, то есть присутствуют файлы 
//кукис, и в них есть логин и айди
//то отображаем профиль пользователя
//Для этого достаем из базы все данные по логину
//и выводим их на странице
if(isset($_SESSION['login']) && isset($_SESSION['id']))
{
 
    include("bd.php");
    $user=$_SESSION['login'];
    $res=mysql_query("SELECT * FROM `users` WHERE `login`='$user' ");
    $user_data=mysql_fetch_array($res);
 
    echo "<center>";
    echo "Ваш логин: <b>". $user_data['login']."</b><br>";
    echo "<a href='exit.php'>Выход</a>";
    include("chat.php");
    echo "</center>";
}
?>
</body>
 
</html>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2018, 16:21
Ответы с готовыми решениями:

Как сделать отправку сообщений по почте?
как сделать отправку сообщений по почте VB.NET? Пользуюсь VS 2010, вставлял код VB 6.0, ругается. Какой код?

Как реализовать отправку сообщений между двумя клиентами (пк)?
кое как разобрался с языком.понятное дело просто синтаксис.без winapi некуда(я виндовщик) и захотел понять как работать с сетями. есть...

Нужна консультация в написание простенького Склиент/Сервера на отправку сообщений
Денег нет (Но буду очень благодарен за помощь. Клиент Вобщем имеем в наличие Форму Form1 TcpClient1 TcpServer1 ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.11.2018, 16:21
Помогаю со студенческими работами здесь

Значение функции, с выводом сообщений
Вычислить значение функции F(x) =(√(4−x)/ (x^3 −64)) + ln(x^2 −9). В случае, если функция неопределена, вывести сообщение об этом...

Как исправить ошибку с выводом сообщений
Столкнулся с проблемой. Написал код, что бы выдавал сообщения при отравлении выбранной информации в буфер обмена по клику на кнопку. Если...

Как сделать отправку данных (оценок и сообщений родителям) на сервер ASP.NET из под WFA приложения?
Есть прототип классного журнал. Нужно, чтобы он был способен по кнопке &quot;отправить оценки&quot; собирал все оценки и отправлял их на сервер...

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

Система личных сообщений. Вывод списка сообщений.
Доброе время суток! Возникла проблема с почтой, а конкретно не могу вывести всю переписку сообщений и входящих и исходящих с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка: «Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel подробные расшифровки по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер