software:development:demo:cms:ucms:index
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| software:development:demo:cms:ucms:index [2025/05/08 22:19] – внешнее изменение 127.0.0.1 | software:development:demo:cms:ucms:index [2025/05/12 21:57] (текущий) – внешнее изменение 127.0.0.1 | ||
|---|---|---|---|
| Строка 4: | Строка 4: | ||
| Данный файл является **Индексным файлом** — это файл главной страницы директории на сайте, то есть тот файл, который загружается, | Данный файл является **Индексным файлом** — это файл главной страницы директории на сайте, то есть тот файл, который загружается, | ||
| - | ===== Логика ===== | + | ===== Логика |
| - | * **ЕСЛИ** приложение не установленно (т.е. отсутствуют файлы **version.php** и **config.php** в директории **/ | + | * **ЕСЛИ** |
| - | * **ИНАЧЕ** проверит переменную **$default_site** в файле **config.php** | + | * **ИНАЧЕ** проверит переменную **%%$default_site%%** в файле **%%config.ini%%** |
| - | * **ЕСЛИ** переменная **$default_site = '' | + | * **ЕСЛИ** переменная **%%$default_site = пустое значение%%**, то приложение выведит в окне индексный файл, первой из установленных конфигураций |
| - | * **ИНАЧЕ** | + | * **ИНАЧЕ** |
| - | ===== Файл | + | ===== Файл |
| + | Создадим Файл | ||
| + | <code php index_test.php> | ||
| + | <!-- test/ | ||
| - | <code php test_7.php> | + | <?php |
| + | /* подключим файл с константами, | ||
| + | require_once __DIR__ . " | ||
| + | |||
| + | /* Присваиваем переменной $file_config значение константы FOLDER | ||
| + | (а это директория ucms, записанная в файле cons.php)и добовляем | ||
| + | '/ | ||
| + | $file_config = FOLDER . '/ | ||
| + | /* Если config.config.ini существует */ | ||
| + | if (file_exists($file_config)) { | ||
| + | /* выводим запись о существовании */ | ||
| + | echo " | ||
| + | /* Иначе выводим запись о существовании*/ | ||
| + | } else { | ||
| + | echo " | ||
| + | } | ||
| + | // Создание и вызов параметров из .ini файла | ||
| + | //////////////////////////////////////////// | ||
| + | /* задаем переменной | ||
| + | * parse_ini_file - обрабатывает конфигурационный файл | ||
| + | * ../ | ||
| + | * ,true); - обрабатываем с секциями (зпголовками) | ||
| + | */ | ||
| + | $config_defaul_site = parse_ini_file(FOLDER . "/ | ||
| + | // Проверьте, | ||
| + | // переменная $config не ровно ЛОЖЬ | ||
| + | if ($config_defaul_site !== false) { | ||
| + | // Доступ к индивидуальным настройкам | ||
| + | |||
| + | $default_site = $config_defaul_site[' | ||
| + | echo " | ||
| + | } else { | ||
| + | echo " | ||
| + | } | ||
| + | //exit; | ||
| + | /* зададим переменным файлы и директории */ | ||
| + | $file_config = FOLDER . '/ | ||
| + | $file_version = FOLDER . '/ | ||
| + | |||
| + | $bcw_site = FOLDER . '/ | ||
| + | $blog_site = FOLDER . '/ | ||
| + | $video_site = FOLDER . '/ | ||
| + | $sns_site = FOLDER . '/ | ||
| + | | ||
| + | /* Если переменные $file_config и file_exists существуют, | ||
| + | то проверим определение переменной конфигурации $default_site | ||
| + | по умолчанию в файле config.ini */ | ||
| + | if (file_exists($file_config) && file_exists($file_version)) { | ||
| + | /* Если переменная $default_site равно " | ||
| + | if ($default_site == "" | ||
| + | /* Проверим, | ||
| + | if (file_exists($bcw_site)) { | ||
| + | /* Если директория /bcw существует, | ||
| + | header(" | ||
| + | exit; | ||
| + | } | ||
| + | /* Проверим, | ||
| + | elseif (file_exists($blog_site)) { | ||
| + | /* Если директория /blog существует, | ||
| + | header(" | ||
| + | exit; | ||
| + | } | ||
| + | /* Проверим, | ||
| + | elseif (file_exists($video_site)) { | ||
| + | /* Если директория /video существует, | ||
| + | header(" | ||
| + | exit; | ||
| + | } | ||
| + | /* Проверим, | ||
| + | elseif (file_exists($sns_site)) { | ||
| + | /* Если директория /sns существует, | ||
| + | header(" | ||
| + | exit; | ||
| + | } | ||
| + | } | ||
| + | else { | ||
| + | /* Если переменная $default_site равно " | ||
| + | перенаправить на страницу, | ||
| + | header(" | ||
| + | } | ||
| + | } | ||
| + | /* Если Переменные $file_config или file_exists не существуют, | ||
| + | то перенаправим на страницу установщика install.php */ | ||
| + | else { | ||
| + | header(" | ||
| + | } | ||
| + | ?> | ||
| </ | </ | ||
| + | Обратите внимание на следующую часть кода: | ||
| + | |||
| + | < | ||
| + | } | ||
| + | //exit; | ||
| + | /* зададим переменным файлы и директории */ | ||
| + | </ | ||
| + | |||
| + | * **%%exit; | ||
| + | в **%%config.ini%%** выбрана конфигурация по умолчанию. | ||
| + | |||
| + | =====Проверка существований директорий===== | ||
| + | Создаем в **/ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **config.ini** существует и он пустой, | ||
| + | |||
| + | Проверим работу страницы | ||
| + | директории: | ||
| + | имя директории. К примеру: | ||
| + | |||
| + | <code php index.php> | ||
| + | <? php | ||
| + | это файл sns | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | А при добавленной директории **blog** переадресация на **/ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | И так поступаем с каждой директорией, | ||
| + | директории. | ||
| + | Ну и при создании всех 4х директорий, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== index_test_2.php ===== | ||
| + | Создадим в директории **/test** файл **index_test_2.php** который будет нам создавать файл с записью | ||
| + | конфигурации. К примеру: | ||
| + | |||
| + | <code php index_test_2.php> | ||
| + | <!-- test/ | ||
| + | |||
| + | <?php | ||
| + | /* подключим файл с константами, | ||
| + | require_once __DIR__ . " | ||
| + | |||
| + | /* Присваиваем переменной $file_config значение константы FOLDER | ||
| + | (а это директория ucms, записанная в файле cons.php)и добовляем | ||
| + | '/ | ||
| + | $file_config = FOLDER . '/ | ||
| + | /* Если config.config.ini существует */ | ||
| + | if (file_exists($file_config)) { | ||
| + | /* выводим запись о существовании */ | ||
| + | echo " | ||
| + | /* Иначе выводим запись о существовании*/ | ||
| + | } else { | ||
| + | echo " | ||
| + | } | ||
| + | $config_defaul_site = parse_ini_file(FOLDER . "/ | ||
| + | // Проверьте, | ||
| + | // переменная $config не ровно ЛОЖЬ | ||
| + | if ($config_defaul_site !== false) { | ||
| + | // Доступ к индивидуальным настройкам | ||
| + | |||
| + | $default_site = $config_defaul_site[' | ||
| + | echo " | ||
| + | } else { | ||
| + | echo " | ||
| + | } | ||
| + | // Создаем массив пар | ||
| + | $databaseSections = [ | ||
| + | ' | ||
| + | ]; | ||
| + | |||
| + | // Записать конфигурацию в раздел «' | ||
| + | $success = write_to_ini($databaseSections, | ||
| + | |||
| + | // Проверим, | ||
| + | if ($success) { | ||
| + | echo " | ||
| + | } else { | ||
| + | echo " | ||
| + | } | ||
| + | // Функция записи настроек в определенный раздел INI-файла | ||
| + | function write_to_ini($config, | ||
| + | $content = "\n; Application Configuration Settings\n\n[$section]\n; | ||
| + | |||
| + | foreach ($config as $key => $value) { | ||
| + | $content .= "$key = $value\n"; | ||
| + | } | ||
| + | |||
| + | // Добавить содержимое в файл | ||
| + | return file_put_contents($file, | ||
| + | } | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | <note blue> | ||
| + | :!: **Примечание: | ||
| + | Ранее **config.ini** создавали мы, значит и владелец файла на запись и чтение тоже мы, а нам необходимо | ||
| + | передать права нашему приложению. Заодно проверим код записи в файл. | ||
| + | </ | ||
| + | |||
| + | Удалим созданный нами файл **config.ini** и запустим в браузере файл **index_test_2.php** | ||
| + | |||
| + | {{: | ||
| + | |||
| + | т.к. мы удалили файл **config.ini** мы получили сообщение: | ||
| + | * **Файл / | ||
| + | * **Ошибка чтения INI-файла.** - прочесть файл приложение не смогло\\ | ||
| + | * **Запись в файл прошла успешно!** - был создан новый **config.ini** с записью **default_site = video** | ||
| + | |||
| + | Запустим в браузере страницу файл **index_test.php** | ||
| + | {{: | ||
| + | |||
| + | Так-же проверим работу логики при пустом значении переменной **%%$default_site%%** в файле **config.ini** | ||
| + | в директории **ucms/ | ||
| + | < | ||
| + | default_site = | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Приложение перешло на первую по списку директорию. | ||
| + | |||
| + | Аналогично, | ||
| + | < | ||
| + | default_site = blog | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== Логика index.php ===== | ||
| + | * **ЕСЛИ** ядро приложение не установленно (т.е. отсутствуют файлы **%%version.php%%** и **%%config.ini%%** в директории **%%/ | ||
| + | * **ИНАЧЕ** проверит переменную **%%$default_site%%** в файле **%%config.ini%%** | ||
| + | * **ЕСЛИ** переменная **%%$default_site = пустое значение%%**, | ||
| + | * **ИНАЧЕ** получив значение переменной **%%$default_site%%** из файла **%%config.ini%%** перенаправит к **%%index.php%%** установленной конфигурации, | ||
| + | |||
| + | По замыслу пользователь может установит несколько приложений и указать приложение по умолчанию в **%%config.ini%%**, | ||
| + | тогда в корневой директории будет работать указанное приложение, | ||
| + | на директория другой конфигурации. К примеру: | ||
| + | |||
| + | Пользователь установил 2е конфигурации **%%blog%%** и **%%video%%** и выбрал основной конфигурацию **%%blog%%**, | ||
| + | в окне **%%index.php%%** будет работать конфигурация **%%blog%%**, | ||
| + | указание директории **%%/ | ||
| + | |||
| + | ===== Файл index.php ===== | ||
| + | Главным отличием файла **index.php** от **index_test.php** станут: | ||
| + | * корректировка директорий файлов | ||
| + | * вынос " | ||
| + | * вывод конфигурации в " | ||
| + | Создадим в директории **/ucms** файл входа в приложение **index.php** | ||
| + | |||
| + | <code php index.php> | ||
| + | <?php | ||
| + | /* index.php */ | ||
| + | /* подключим файл с константами, | ||
| + | | ||
| + | include ' | ||
| + | include FOLDER . '/ | ||
| + | /* запустим функцию проверки первого входа в приложение */ | ||
| + | check_start(); | ||
| + | ?> | ||
| + | </ | ||
| + | |||
| + | Создадим в директории **/ | ||
| + | |||
| + | <code php function.php> | ||
| + | <? | ||
| + | /* Функция проверки установки ядра приложения и установленной конфигурации */ | ||
| + | function check_start() { | ||
| + | /* Присваиваем переменной $file_config значение константы FOLDER | ||
| + | (а это директория ucms, записанная в файле cons.php)и добовляем | ||
| + | '/ | ||
| + | $file_config = FOLDER . '/ | ||
| + | |||
| + | // Создание и вызов параметров из .ini файла | ||
| + | //////////////////////////////////////////// | ||
| + | /* задаем переменной | ||
| + | * parse_ini_file - обрабатывает конфигурационный файл | ||
| + | * / | ||
| + | * ,true); - обрабатываем с секциями (зпголовками) | ||
| + | */ | ||
| + | $config_defaul_site = parse_ini_file(FOLDER . "/ | ||
| + | // Присвоим переменной $default_site значение из ini-файл. | ||
| + | $default_site = $config_defaul_site[' | ||
| + | /* зададим переменным файлы и директории */ | ||
| + | $file_config = FOLDER . '/ | ||
| + | $file_version = FOLDER . '/ | ||
| + | |||
| + | $bcw_site = FOLDER . '/ | ||
| + | $blog_site = FOLDER . '/ | ||
| + | $video_site = FOLDER . '/ | ||
| + | $sns_site = FOLDER . '/ | ||
| + | | ||
| + | /* Если переменные $file_config и file_exists существуют, | ||
| + | то проверим определение переменной конфигурации $default_site | ||
| + | по умолчанию в файле config.php */ | ||
| + | if (file_exists($file_config) && file_exists($file_version)) { | ||
| + | /* Если переменная $default_site равно " | ||
| + | if ($default_site | ||
| + | /* Проверим, | ||
| + | if (file_exists($bcw_site)) { | ||
| + | /* Если директория /bcw существует, | ||
| + | header(" | ||
| + | exit; | ||
| + | } | ||
| + | /* Проверим, | ||
| + | elseif (file_exists($blog_site)) { | ||
| + | /* Если директория /blog существует, | ||
| + | header(" | ||
| + | exit; | ||
| + | } | ||
| + | /* Проверим, | ||
| + | elseif (file_exists($video_site)) { | ||
| + | /* Если директория /video существует, | ||
| + | header(" | ||
| + | exit; | ||
| + | } | ||
| + | /* Проверим, | ||
| + | elseif (file_exists($sns_site)) { | ||
| + | /* Если директория /sns существует, | ||
| + | header(" | ||
| + | exit; | ||
| + | } | ||
| + | } | ||
| + | else { | ||
| + | /* Если переменная $default_site равно " | ||
| + | перенаправить на страницу, | ||
| + | header(" | ||
| + | exit; | ||
| + | } | ||
| + | } | ||
| + | /* Если Переменные $file_config или file_exists не существуют, | ||
| + | то перенаправим на страницу установщика install.php */ | ||
| + | else { | ||
| + | header(" | ||
| + | exit; | ||
| + | } | ||
| + | } | ||
| + | ?> | ||
| + | </ | ||
| + | Откроем в браузере наш файл **/ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Как вы уже догадались мы закроем файл **config.ini** файлом **.htaccess** | ||
| + | |||
| + | <code php .htaccess> | ||
| + | # запретим просмотр файлов с расширением .ini следующих файлов | ||
| + | # (задается правило для перенаправления) | ||
| + | # config.ini | ||
| + | RewriteEngine On | ||
| + | RewriteRule ^(config)\.ini$ - [R=403, | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| <note blue> | <note blue> | ||
| - | <wrap left>← [[software: | + | <wrap left>← [[software: |
| - | <wrap right> | + | <wrap right> |
| </ | </ | ||
software/development/demo/cms/ucms/index.1746731993.txt.gz · Последнее изменение: — 127.0.0.1
