Инструменты пользователя

Инструменты сайта


software:development:demo:cms:ucms:index

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
software:development:demo:cms:ucms:index [2025/05/10 09:09] vladpolskiysoftware:development:demo:cms:ucms:index [2025/05/12 21:57] (текущий) – внешнее изменение 127.0.0.1
Строка 5: Строка 5:
  
 ===== Логика index_test.php ===== ===== Логика index_test.php =====
-  * **ЕСЛИ** ядро приложение не установленно (т.е. отсутствуют файлы **%%version.php%%** и **%%config.php%%** в директории **%%/includes%%**), то приложение выведит в окне **%%/library/install%%** к файлу **%%install.php%%** +  * **ЕСЛИ** ядро приложение не установленно (т.е. отсутствуют файлы **%%version.txt%%** и **%%config.ini%%** в директории **%%/includes%%**), то приложение выведит в окне **%%/library/install%%** к файлу **%%install.php%%** 
-  * **ИНАЧЕ** проверит переменную **%%$default_site%%** в файле **%%config.php%%**+  * **ИНАЧЕ** проверит переменную **%%$default_site%%** в файле **%%config.ini%%**
   * **ЕСЛИ** переменная **%%$default_site = пустое значение%%**, то приложение выведит в окне индексный файл, первой из установленных конфигураций   * **ЕСЛИ** переменная **%%$default_site = пустое значение%%**, то приложение выведит в окне индексный файл, первой из установленных конфигураций
-  * **ИНАЧЕ** получив значение переменной **%%$default_site%%** из файла **%%default_site%%** выведит в окне **%%index.php%%** индексный файл установленной конфигурации, указанный пользователем.+  * **ИНАЧЕ** получив значение переменной **%%$default_site%%** из файла **%%default_site%%** перенаправит к **%%install.php%%** индексный файл установленной конфигурации, указанный пользователем.
  
 ===== Файл index_test.php ===== ===== Файл index_test.php =====
 +Создадим Файл  **index_test.php** в **/ucms** с кодом:
 <code php index_test.php> <code php index_test.php>
-<!-- index_test.php -->+<!-- test/index_test.php --> 
 <?php <?php
 /* подключим файл с константами, для апределения корневой директории приложения */ /* подключим файл с константами, для апределения корневой директории приложения */
 require_once __DIR__ . "../../includes/cons.php"; require_once __DIR__ . "../../includes/cons.php";
 + 
 + /* Присваиваем переменной $file_config значение константы FOLDER 
 + (а это директория ucms, записанная в файле cons.php)и добовляем 
 + '/includes/config.ini' - директорию includes и искомый файл config.ini */
 +    $file_config = FOLDER . '/includes/config.ini';
 + /* Если config.config.ini существует */
 +        if (file_exists($file_config)) {
 + /* выводим запись о существовании */
 + echo "Файл $file_config существует". "<br/>";
 + /* Иначе выводим запись о существовании*/
 + } else {
 + echo "Файл $file_config не существует". "<br/>";
 + }
  
 +// Создание и вызов параметров из .ini файла
 +////////////////////////////////////////////
 +/* задаем переменной  значение $config 
 +* parse_ini_file - обрабатывает конфигурационный файл
 +* ../../includes/config.ini - путь к config.ini
 +* ,true); - обрабатываем с секциями (зпголовками)
 +*/
 +$config_defaul_site = parse_ini_file(FOLDER . "/includes/config.ini",true);
 +// Проверьте, успешно ли прочитан ini-файл.
 +// переменная $config не ровно ЛОЖЬ
 +if ($config_defaul_site !== false) {
 +    // Доступ к индивидуальным настройкам
 + 
 + $default_site = $config_defaul_site['default_site']['default_site'];
 +      echo "Конфигурация по умолчанию: " . $default_site . "<br/>";
 +} else {
 +    echo "Ошибка чтения INI-файла.";
 +}
 +//exit;
 /* зададим переменным файлы и директории */ /* зададим переменным файлы и директории */
-$file_config = FOLDER . '/includes/config.php'; +$file_config = FOLDER . '/includes/config.ini'; 
-$file_version = FOLDER . '/version.php'; +$file_version = FOLDER . '/version.txt'; 
 + 
 $bcw_site = FOLDER . '/bcw'; $bcw_site = FOLDER . '/bcw';
 $blog_site = FOLDER . '/blog'; $blog_site = FOLDER . '/blog';
 $video_site = FOLDER . '/video'; $video_site = FOLDER . '/video';
 $sns_site = FOLDER . '/sns'; $sns_site = FOLDER . '/sns';
- +  
-/* подключим файл конфигурации */ +
-include '../includes/config.php'; +
 /* Если переменные $file_config и file_exists существуют, /* Если переменные $file_config и file_exists существуют,
 то проверим определение переменной конфигурации $default_site то проверим определение переменной конфигурации $default_site
-по умолчанию в файле config.php */+по умолчанию в файле config.ini */
 if (file_exists($file_config) && file_exists($file_version)) { if (file_exists($file_config) && file_exists($file_version)) {
  /* Если переменная $default_site равно "пустое место" */  /* Если переменная $default_site равно "пустое место" */
Строка 63: Строка 93:
  else {   else { 
  /* Если переменная $default_site равно "выбор в файле конфигуратора"   /* Если переменная $default_site равно "выбор в файле конфигуратора" 
- перенаправить на страницу, указанную в config.php*/+ перенаправить на страницу, указанную в config.ini*/
  header("Location: ../" . "$default_site" . "/");  header("Location: ../" . "$default_site" . "/");
  }  }
Строка 75: Строка 105:
 </code> </code>
  
-Проверим работу страницы test_7.php в веб - браузере, создав поочередно в директории **/ucms** вложенные  +Обратите внимание на следующую часть кода:
-директории**bcw**, **blog**, **video**, и **sns**+
  
-Так-же проверим работу логики при пустом значении переменной **%%$default_site%%** в файле **config.php** +<code> 
 +
 +//exit;  
 +/* зададим переменным файлы и директории */ 
 +</code> 
 + 
 +  * **%%exit;%%** необходима только лишь для остановки кода, чтобы увидеть проверку работы кода, если  
 +в **%%config.ini%%** выбрана конфигурация по умолчанию.  
 + 
 +=====Проверка существований директорий===== 
 +Создаем в **/ucms/include** пустой файл **config.ini** и запускаем в браузере файл **/ucms/test/index_test.php** 
 + 
 +{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_22.png|}} 
 + 
 +**config.ini** существует и он пустой, тогда: 
 + 
 +Проверим работу страницы  **index_test.php** в веб - браузере, создав поочередно в директории **/ucms** вложенные  
 +директории: **bcw**, **blog**, **video**, и **sns** с вложенными файлами **index.php** внутри которых запишем  
 +имя директории. К примеру: создадим директорию **sns** с вложенным файлом **index.php** и записываем   
 + 
 +<code php index.php> 
 +<? php 
 +это файл sns 
 +?> 
 +</code> 
 + 
 +{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_23.png|}} 
 + 
 +А при добавленной директории **blog** переадресация на **/ucms/blog/** т.к. он раньше назначен у нас в проверке 
 + 
 +{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_24.png|}} 
 + 
 +И так поступаем с каждой директорией, проверяя (обновляя страница) логику поиска и открытия первой по алфавиту 
 +директории.  
 +Ну и при создании всех 4х директорий, мы получим первую по списку при запуске **index_test.php** 
 + 
 +{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_25.png|}} 
 + 
 +===== index_test_2.php ===== 
 +Создадим в директории **/test** файл **index_test_2.php** который будет нам создавать файл с записью 
 +конфигурации. К примеру: **video** 
 + 
 +<code php index_test_2.php> 
 +<!-- test/index_test_2.php --> 
 + 
 +<?php 
 +/* подключим файл с константами, для апределения корневой директории приложения */ 
 +require_once __DIR__ . "../../includes/cons.php"; 
 +  
 + /* Присваиваем переменной $file_config значение константы FOLDER  
 + (а это директория ucms, записанная в файле cons.php)и добовляем  
 + '/includes/config.php' - директорию includes и искомый файл config.ini */ 
 +    $file_config = FOLDER . '/includes/config.ini'; 
 + /* Если config.config.ini существует */ 
 +        if (file_exists($file_config)) { 
 + /* выводим запись о существовании */ 
 + echo "Файл $file_config существует". "<br/>"; 
 + /* Иначе выводим запись о существовании*/ 
 + } else { 
 + echo "Файл $file_config не существует". "<br/>"; 
 +
 +$config_defaul_site = parse_ini_file(FOLDER . "/includes/config.ini",true); 
 +// Проверьте, успешно ли прочитан ini-файл. 
 +// переменная $config не ровно ЛОЖЬ 
 +if ($config_defaul_site !== false) { 
 +    // Доступ к индивидуальным настройкам 
 +  
 + $default_site = $config_defaul_site['default_site']['default_site']; 
 +      echo "Конфигурация по умолчанию: " . $default_site . "<br/>"; 
 +} else { 
 +    echo "Ошибка чтения INI-файла.";  
 +
 +// Создаем массив пар 
 +$databaseSections = [ 
 +    'default_site' => 'video', 
 +]; 
 +  
 +// Записать конфигурацию в раздел «'default_site'» 
 +$success = write_to_ini($databaseSections, 'default_site', '../includes/config.ini'); 
 +  
 +// Проверим, успешно ли выполнена запись в файл. 
 +if ($success) { 
 +    echo "Запись в файл прошла успешно!"; 
 +} else { 
 +    echo "Ошибка записи INI-файла."; 
 +
 +// Функция записи настроек в определенный раздел INI-файла 
 +function write_to_ini($config, $section, $file) { 
 +    $content = "\n; Application Configuration Settings\n\n[$section]\n; Configuration\n"; 
 +  
 +    foreach ($config as $key => $value) { 
 +        $content .= "$key = $value\n"; 
 +    } 
 +  
 +    // Добавить содержимое в файл 
 +    return file_put_contents($file, $content, FILE_APPEND) !== false; 
 +
 +?> 
 +</code> 
 + 
 +<note blue> 
 +:!: **Примечание:**\\   
 +Ранее **config.ini** создавали мы, значит и владелец файла на запись и чтение тоже мы, а нам необходимо 
 +передать права нашему приложению. Заодно проверим код записи в файл. 
 +</note> 
 + 
 +Удалим созданный нами файл **config.ini** и запустим в браузере файл **index_test_2.php** 
 + 
 +{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_26.png|}} 
 + 
 +т.к. мы удалили файл **config.ini** мы получили сообщение:\\   
 +  * **Файл /volume1/web/ucms/includes/config.ini** не существует - файла действительно нет\\   
 +  * **Ошибка чтения INI-файла.** - прочесть файл приложение не смогло\\   
 +  * **Запись в файл прошла успешно!** - был создан новый **config.ini** с записью **default_site = video** 
 +  
 +Запустим в браузере страницу файл **index_test.php**  
 +{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_27.png|}} 
 + 
 +Так-же проверим работу логики при пустом значении переменной **%%$default_site%%** в файле **config.ini** 
 в директории **ucms/includes** в директории **ucms/includes**
 <code> <code>
-$default_site = "";+default_site = 
 </code> </code>
-Аналогично, для определенной переменной **%%$default_site%%**+ 
 +{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_28.png|}} 
 + 
 +Приложение перешло на первую по списку директорию. 
 + 
 +Аналогично, для определенной переменной **%%$default_site%%** 
 <code> <code>
-$default_site = "blog";+default_site = blog
 </code> </code>
  
-{{:software:development:demo:cms:ucms:ucms_creat_42.png?|}}+{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_29.png|}}
  
 ===== Логика index.php ===== ===== Логика index.php =====
-  * **ЕСЛИ** ядро приложение не установленно (т.е. отсутствуют файлы **%%version.php%%** и **%%config.php%%** в директории **%%/includes%%**), то приложение выведит в окне **%%/library/install%%** к файлу **%%install.php%%** +  * **ЕСЛИ** ядро приложение не установленно (т.е. отсутствуют файлы **%%version.php%%** и **%%config.ini%%** в директории **%%/includes%%**), то приложение перенаправит в **%%/library/install%%** к файлу **%%install.php%%** 
-  * **ИНАЧЕ** проверит переменную **%%$default_site%%** в файле **%%config.php%%** +  * **ИНАЧЕ** проверит переменную **%%$default_site%%** в файле **%%config.ini%%** 
-  * **ЕСЛИ** переменная **%%$default_site = пустое значение%%**, то приложение выведит в окне индексный файл, первой из установленных конфигураций +  * **ЕСЛИ** переменная **%%$default_site = пустое значение%%**, то приложение перенаправит на индексный файл, первой из установленных конфигураций 
-  * **ИНАЧЕ** получив значение переменной **%%$default_site%%** из файла **%%default_site%%** выведит в окне **%%index.php%%** индексный файл установленной конфигурации, указанный пользователем.+  * **ИНАЧЕ** получив значение переменной **%%$default_site%%** из файла **%%config.ini%%** перенаправит к **%%index.php%%** установленной конфигурации, указанной пользователем.
  
-По замыслу пользователь может установит несколько приложений и указать приложение по умолчанию в **%%config.php%%**, +По замыслу пользователь может установит несколько приложений и указать приложение по умолчанию в **%%config.ini%%**, 
 тогда в корневой директории будет работать указанное приложение, а к остальным будет доступ через ссылку в коде программы тогда в корневой директории будет работать указанное приложение, а к остальным будет доступ через ссылку в коде программы
 на директория другой конфигурации. К примеру: на директория другой конфигурации. К примеру:
Строка 117: Строка 269:
  *директории приложении и файлов конфигурации и функций */  *директории приложении и файлов конфигурации и функций */
 include './includes/cons.php'; include './includes/cons.php';
-include FOLDER . '/includes/config.php'; 
 include FOLDER . '/includes/function.php'; include FOLDER . '/includes/function.php';
 /* запустим функцию проверки первого входа в приложение */ /* запустим функцию проверки первого входа в приложение */
Строка 124: Строка 275:
 </code> </code>
  
-Запишем в файл **%%function.php%%** нашу первую функцию **%%check_start();%%**+Создадим в директории **/includes** файл **%%function.php%%** и запишем в него нашу первую функцию **%%check_start();%%**
  
 <code php function.php> <code php function.php>
-<?php+<?php 
 /* Функция проверки установки ядра приложения и установленной конфигурации */ /* Функция проверки установки ядра приложения и установленной конфигурации */
 function check_start() { function check_start() {
-  //echo "это простая фунция";+ /* Присваиваем переменной $file_config значение константы FOLDER  
 + (а это директория ucms, записанная в файле cons.php)и добовляем  
 + '/includes/config.php' - директорию includes и искомый файл config.ini */ 
 +    $file_config = FOLDER . '/includes/config.ini'; 
 + 
 +// Создание и вызов параметров из .ini файла 
 +//////////////////////////////////////////// 
 +/* задаем переменной  значение $config  
 +* parse_ini_file - обрабатывает конфигурационный файл 
 +* /includes/config.ini - путь к config.ini 
 +* ,true); - обрабатываем с секциями (зпголовками) 
 +*/ 
 +$config_defaul_site = parse_ini_file(FOLDER . "/includes/config.ini",true); 
 +// Присвоим переменной $default_site значение из ini-файл. 
 +$default_site = $config_defaul_site['default_site']['default_site'];
 /* зададим переменным файлы и директории */ /* зададим переменным файлы и директории */
-$file_config = FOLDER . '/includes/config.php'; +$file_config = FOLDER . '/includes/config.ini'; 
-$file_version = 'version.php';+$file_version = FOLDER . '/version.txt';
    
 $bcw_site = FOLDER . '/bcw'; $bcw_site = FOLDER . '/bcw';
Строка 139: Строка 304:
 $video_site = FOLDER . '/video'; $video_site = FOLDER . '/video';
 $sns_site = FOLDER . '/sns'; $sns_site = FOLDER . '/sns';
- +  
-/* подключим в функции файл  config.php для определения  +
-переменной $default_site*/ +
-include FOLDER . '/includes/config.php';+
 /* Если переменные $file_config и file_exists существуют, /* Если переменные $file_config и file_exists существуют,
 то проверим определение переменной конфигурации $default_site то проверим определение переменной конфигурации $default_site
Строка 148: Строка 310:
 if (file_exists($file_config) && file_exists($file_version)) { if (file_exists($file_config) && file_exists($file_version)) {
  /* Если переменная $default_site равно "пустое место" */  /* Если переменная $default_site равно "пустое место" */
- if ($default_site == ""){+ if ($default_site  == ''){
     /* Проверим, что конфигурация установлена в директории /bcw */     /* Проверим, что конфигурация установлена в директории /bcw */
  if (file_exists($bcw_site)) {  if (file_exists($bcw_site)) {
- /* Если директория /bcw определим имя переменной $default_site + /* Если директория /bcw существует, перенаправим туда и конец скрипта*/ 
-    равное индексному файлу bcw.php в директории /bcw + header("Location: ./bcw/");
-  */ +
- include FOLDER '/bcw/bcw.php';+
  exit;  exit;
  }  }
  /* Проверим, что конфигурация установлена в директории /blog */  /* Проверим, что конфигурация установлена в директории /blog */
  elseif (file_exists($blog_site)) {  elseif (file_exists($blog_site)) {
- /* Если директория /blog определим имя переменной $default_site + /* Если директория /blog существует, перенаправим туда и конец скрипта*/ 
-    равное индексному файлу blog.php в директории /blog + header("Location: ./blog/");
-  */ +
- include FOLDER '/blog/blog.php';+
  exit;  exit;
  }  }
  /* Проверим, что конфигурация установлена в директории /video */  /* Проверим, что конфигурация установлена в директории /video */
  elseif (file_exists($video_site)) {  elseif (file_exists($video_site)) {
- /* Если директория /video определим имя переменной $default_site + /* Если директория /video существует, перенаправим туда и конец скрипта*/ 
-    равное индексному файлу video.php в директории /video + header("Location: ./video/");
-  */ +
- include FOLDER '/video/video.php';+
  exit;  exit;
  }  }
  /* Проверим, что конфигурация установлена в директории /sns */  /* Проверим, что конфигурация установлена в директории /sns */
  elseif (file_exists($sns_site)) {  elseif (file_exists($sns_site)) {
- /* Если директория /sns определим имя переменной $default_site + /* Если директория /sns существует, перенаправим туда и конец скрипта*/ 
-    равное индексному файлу sns.php в директории /sns + header("Location: ./sns/");
-  */ +
- include FOLDER '/sns/sns.php';+
  exit;  exit;
  }  }
Строка 184: Строка 338:
  else {   else { 
  /* Если переменная $default_site равно "выбор в файле конфигуратора"   /* Если переменная $default_site равно "выбор в файле конфигуратора" 
- подключим в окне файл, указанный в config.php*/ + перенаправить на страницу, указанную в config.php*/ 
- include FOLDER "/" . "$default_site" . "/" . "$default_site" .  ".php";+ header("Location: ./" . "$default_site" . "/");
  exit;  exit;
  }  }
  
 /* Если Переменные $file_config или file_exists не существуют, /* Если Переменные $file_config или file_exists не существуют,
-то перенаправим пользователя к файлу установщика install.php в  +то перенаправим на страницу установщика install.php */
-директорию  /ucms/library/install/  +
-*/+
 else {  else { 
- header("Location: ./library/install/install.php");+    header("Location: ./library/install/install.php");
  exit;  exit;
 + }
 +}
 ?> ?>
 </code> </code>
 +Откроем в браузере наш файл **/ucms/includes/config.ini**
  
-Проверим работу программы при созданных файлах **%%config.php%%** и **%%version.php%%**, изменяя +{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_30.png|}} 
-значения переменной **%%$default_site%%**  + 
-<code> +Как вы уже догадались мы закроем файл **config.ini** файлом **.htaccess** 
-$default_site "video";+ 
 +<code php .htaccess> 
 +запретим просмотр файлов с расширением .ini следующих файлов 
 +# (задается правило для перенаправления) 
 +# config.ini 
 +RewriteEngine On 
 +RewriteRule ^(config)\.ini- [R=403,L,NC]
 </code> </code>
 +
 +{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_31.png|}}
  
 <note blue> <note blue>
software/development/demo/cms/ucms/index.1746857398.txt.gz · Последнее изменение: vladpolskiy