software:development:demo:cms:ucms:creating_sample_install_php_setting
Это старая версия документа!
Редактора стилей шаблона install.php
Введение
- README.txt
/** * ЛОГИКА РАБОТЫ ТЕКСТОВОГО РЕДАКТОРА CSS (edit_css.php) * * Файл предназначен для прямого редактирования кода install.css через браузер. * * 1. ИНИЦИАЛИЗАЦИЯ И ПУТИ: * - Скрипт работает с двумя файлами: рабочим (install.css) и эталонным (default_install.css). * - Переменная $message служит для накопления статусов операций (успех/ошибка). * * 2. ОБРАБОТКА КОМАНД (POST-запросы): * - ПРИОРЕТЕТ СБРОСА (reset_default): Если нажата кнопка «По умолчанию», скрипт * игнорирует содержимое текстового поля и полностью перезаписывает рабочий CSS * данными из эталонного файла. Это «аварийный» метод восстановления верстки. * - СОХРАНЕНИЕ (css_content): Если сброс не инициирован, скрипт берет текст из * textarea и записывает его в рабочий файл. Перед записью выполняется проверка * is_writable(), чтобы избежать фатальных ошибок PHP при отсутствии прав доступа (CHMOD). * * 3. ПОДГОТОВКА ДАННЫХ (ЧТЕНИЕ): * - После выполнения команд (или при первом открытии) файл читается заново. * - Содержимое пропускается через htmlspecialchars(). Это критически важно, так как * CSS может содержать спецсимволы, которые браузер может принять за HTML-теги, * что «сломает» форму или создаст уязвимость. * * 4. ИНТЕРФЕЙС И ГЕОМЕТРИЯ: * - Использован фиксированный контейнер (max-width: 700px) с центрированием через * margin: auto для обеспечения визуального порядка. * - Управление реализовано через стандартные HTML-формы: кнопка «По умолчанию» * имеет атрибут 'name', что позволяет PHP отличить её нажатие от простого сохранения. * - Кнопка «Отмена» является обычной ссылкой, прерывающей работу редактора без POST-запроса. */
- setting_install_windows.php
<?php $cssFile = __DIR__ . '/css/install.css'; $defaultFile = __DIR__ . '/css/default_install.css'; $message = ''; // 1. ЛОГИКА СБРОСА: Если нажата кнопка "Восстановить по умолчанию" if (isset($_POST['reset_default'])) { if (file_exists($defaultFile)) { $defaultContent = file_get_contents($defaultFile); if (is_writable($cssFile)) { file_put_contents($cssFile, $defaultContent); $message = '<p class="msg ok">Стили восстановлены из файла по умолчанию!</p>'; } else { $message = '<p class="msg err">Ошибка: Нет прав на запись в install.css</p>'; } } else { $message = '<p class="msg err">Ошибка: Файл по умолчанию не найден.</p>'; } } // 2. ЛОГИКА СОХРАНЕНИЯ: Если форма отправлена вручную if (isset($_POST['css_content']) && !isset($_POST['reset_default'])) { if (is_writable($cssFile)) { file_put_contents($cssFile, $_POST['css_content']); $message = '<p class="msg ok">Файл успешно сохранен!</p>'; } else { $message = '<p class="msg err">Ошибка: Файл недоступен для записи.</p>'; } } // 3. ЧТЕНИЯ: Получаем актуальное содержимое $content = file_exists($cssFile) ? htmlspecialchars(file_get_contents($cssFile)) : ''; ?> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Редактор стилей</title> <style> body { font-family: sans-serif; background: #f4f4f4; margin: 0; padding: 20px; } /* Центрирование контейнера (700px) */ .editor-container { max-width: 700px; margin: 0 auto; background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); } h3 { margin-top: 0; color: #333; font-size: 18px; } textarea { width: 100%; height: 450px; font-family: monospace; font-size: 13px; padding: 10px; border: 1px solid #ccc; box-sizing: border-box; resize: vertical; } .controls { margin-top: 15px; display: flex; gap: 10px; align-items: center; } button { padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; color: white; font-weight: bold; } .btn-save { background: #2e7d32; } .btn-reset { background: #d32f2f; } .btn-back { color: #666; text-decoration: none; font-size: 14px; margin-left: auto; } button:hover { opacity: 0.9; } .msg { font-size: 14px; margin-bottom: 10px; } .ok { color: green; } .err { color: red; } </style> </head> <body> <div class="editor-container"> <h3>Редактор: css/install.css</h3> <?= $message ?> <form method="post"> <textarea name="css_content"><?= $content ?></textarea> <div class="controls"> <!-- Кнопка сохранения --> <button type="submit" class="btn-save">Сохранить</button> <!-- Кнопка сброса (без JS) --> <button type="submit" name="reset_default" class="btn-reset" onclick="return confirm('Восстановить исходные стили?')">По умолчанию</button> <!-- Ссылка отмены --> <a href="install.php" class="btn-back">Отмена</a> </div> </form> </div> </body> </html>
Только авторизованные участники могут оставлять комментарии.
software/development/demo/cms/ucms/creating_sample_install_php_setting.1777970560.txt.gz · Последнее изменение: — VladPolskiy
