1. Проект: Веб-система для отправки, приема и управления текстовыми сообщениями. 2. Цель: Создание трехстраничного веб-приложения (PHP, JavaScript, HTML) с функционалом отправки, серверной обработки и просмотра текстовых данных через работу с файловой системой. 3. Функциональные требования: 3.1. Страница отправки (send.php): Элементы интерфейса: Текстовое поле (textarea) для ввода сообщения. Жесткое ограничение длины вводимого текста на стороне клиента: 120 символов. Индикатор счетчика введенных символов в реальном времени (формат: X/120). Кнопка отправки с текстом «Send Message». Логика на стороне клиента (JavaScript): Валидация длины сообщения перед отправкой. Асинхронная отправка данных (POST-запрос) на удаленный скрипт http://mysite.com/page.php. После отправки — очистка поля ввода и сброс счетчика. Логика на стороне сервера (PHP в save_count.php): Получение количества символов отправленного сообщения. Создание (при отсутствии) или полная перезапись файла count.txt в текущей директории. Запись в файл count.txt строкового представления числа отправленных символов. Установка прав доступа на созданный файл: чтение и запись (0666). Возврат статуса операции (JSON). 3.2. Серверный скрипт обработки (page.php): Входные данные: Текстовое сообщение, полученное методом POST. Выходные данные: Текстовый ответ «Data saved» (успех) или «Data Not Saved» (ошибка). Основной рабочий процесс: Запись сообщения: Полученное сообщение полностью перезаписывается в файл messages.txt. При отсутствии файла — он создается с правами 0666. Подсчитывается количество записанных символов. Работа с агрегированным счетчиком: Чтение текущего значения из файла received.txt в переменную $cnt. Если файл не существует — создать его с правами 0666, записать значение 0, присвоить $cnt = 0. Обновление счетчика: К значению $cnt прибавляется количество символов, записанных на шаге 1. Новое значение $cnt полностью перезаписывается в файл received.txt. Обработка ошибок: При любой ошибке ввода-вывода скрипт должен вернуть статус «Data Not Saved». 3.3. Страница просмотра и управления (view.php): Стиль: Должен соответствовать дизайну страницы send.php. Элементы интерфейса: Область (например, textarea) для отображения содержимого файла messages.txt. Панель информации о файле (путь, размер, время изменения, права доступа). Переключатель режимов «Просмотр» / «Редактирование». Набор кнопок управления: «Обновить», «Сохранить», «Копировать в буфер», «Очистить», «Скачать». Индикатор количества символов. Область для вывода системных сообщений. Навигационные ссылки на другие страницы системы. Функциональность: Загрузка данных: Асинхронное чтение и отображение текущего содержимого messages.txt при загрузке страницы. Редактирование: В режиме редактирования пользователь может изменять текст в поле ввода. Кнопка «Сохранить» становится активной только при наличии изменений. Сохранение: Асинхронная отправка измененного содержимого на сервер для полной перезаписи файла messages.txt с обновлением связанного счетчика в received.txt. Вспомогательные функции: Копирование содержимого в буфер обмена, скачивание файла, очистка поля ввода. Валидация: Визуальное предупреждение при превышении лимита в 120 символов. 4. Общие технические требования: Безопасность и надежность: Все операции чтения/записи файлов должны явно открывать и закрывать файловые дескрипторы. Обязательная обработка и логирование возможных ошибок (отсутствие файлов, проблемы с правами доступа, сбои ввода-вывода). Валидация входных данных как на стороне клиента, так и на стороне сервера. Архитектура: Использование асинхронных запросов (Fetch API) для взаимодействия между клиентом и сервером без перезагрузки страниц. Четкое разделение ответственности: HTML/PHP для разметки и первичной логики, JavaScript для интерактивности. Работа с файлами: Все файлы .txt (count.txt, messages.txt, received.txt) содержат только текстовые данные. Права доступа к создаваемым файлам должны явно устанавливаться на чтение и запись (0666). 5. Дополнительные компоненты (реализованы): get_messages.php — вспомогательный API-эндпоинт для безопасного чтения содержимого messages.txt. update_messages.php — вспомогательный API-эндпоинт для безопасной записи в messages.txt с сопутствующим обновлением received.txt. index.php — центральная индексная страница системы с навигацией и статусом файлов.