ТЗ дано, в целях - простое, про авторизацию не заикнулись...
Реализация будет состоять из 3 частей:
1. интерфейс - frontend
2. серверная часть backend
3. из-за особенности реализации backend большинством инструментов и веб серверов, регулярные операции делают сторонним скриптом, обычно его запускают средствами ОС (его шедулером), в linux это cron
Итак, интерфейс из одного окна - окно запроса текста с кнопкой отправки с сообщением о результате, на основе html forms:
spoiler<!DOCTYPE html>
<html>
<head>
<title>Текстовая форма</title>
</head>
<body>
<form action="script.php" method="post">
<textarea name="text" rows="10" cols="50"></textarea>
<br>
<input type="submit" value="Отправить">
</form>
</body>
</html>
Бакэнд на php это эта же самая страница, но в местах где нужно менять содержимое по логике (где нужно вывести сообщение о результате) ставится
<?php ... код ... ?>
. Вот пример сохранения введенного сообщения пользователем в файл, имя которого будет содержать номер сессии пользователя и время (timestamp, это сделано намеренно что бы показать проблему именования файла в данной задаче при многопользовательском доступе, если использовать просто timestamp, т.е. время в секундах, то несколько одновременно посланных сообщений заменят друг друга и останется только последнее, в приведенном примере эта проблема сохранится только для одного 'пользователя' т.е. сессии браузера - открытой страницы что даже локально сложно добиться, естественно правильно делать индекс со списком файлов но зачем, задача то простая):
spoiler<?php
define("STOREPATH","/my_cool_file_database");
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["text"])) {
// Получаем текст из POST запроса
$text = $_POST["text"];
// Создаем имя файла: session_id + _ + timestamp
$filename = STOREPATH . "/" . session_id() . "_" . time() . ".txt";
try {
// Пытаемся записать файл
if (file_put_contents($filename, $text) !== false) {
echo "Успешно";
} else {
throw new Exception("Ошибка при записи файла");
}
} catch (Exception $e) {
echo "Ошибка: " . $e->getMessage();
}
} else {
echo "Ошибка: Неверный запрос или отсутствуют данные";
}
?>
И соответственно скрипт удаления старых сообщений
spoiler<?php
define("STOREPATH","/my_cool_file_database");
define("REMOVE_INTERVAL",3600); // интервал в секундах для старых сообщений
// Получаем все txt файлы из директории
foreach (glob(STOREPATH . "/*.txt") as $file) {
// Извлекаем timestamp из имени файла
if (preg_match('/_([0-9]+(?:\.[0-9]+)?)\.txt$/', $file, $matches)) {
$fileTimestamp = (int)$matches[1];
// Если файл старше часа - удаляем
if (time() - $fileTimestamp > REMOVE_INTERVAL) {
unlink($file);
}
}
}
?>
Само собой права доступа на каталог должны быть выставлены корректно, никаких ошибок не логируется.
Никаких лимитов, никакой авторизации и защиты от ддос... в данном примере любой пользователь может забить содержимое диска на сервере, отсылая бессмысленно гиганские запросы с пустым текстом (пробелы например, они буду эффективно сжаты браузером)