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

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


software:development:demo:cms:ucms:index

Различия

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

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

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
software:development:demo:cms:ucms:index [2025/05/08 21:45] vladpolskiysoftware:development:demo:cms:ucms:index [2025/05/12 21:57] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
-====== 7. Файл index.php ======+====== 8.2. Файл index.php ======
 ===== Введение ===== ===== Введение =====
  
 Данный файл является **Индексным файлом** — это файл главной страницы директории на сайте, то есть тот файл, который загружается, когда посетитель обращается напрямую к директории. В нашем приложении Файл index.php - это точка входа. Данный файл является **Индексным файлом** — это файл главной страницы директории на сайте, то есть тот файл, который загружается, когда посетитель обращается напрямую к директории. В нашем приложении Файл index.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%%** - индексный файл установленной конфигурации, указанный пользователем.
  
-===== Файл test_7.php =====+===== Файл index_test.php ===== 
 +Создадим Файл  **index_test.php** в **/ucms** с кодом: 
 +<code php index_test.php> 
 +<!-- test/index_test.php -->
  
-<code php test_7.php> 
-<!-- test_7.php --> 
 <?php <?php
-session_start();+/* подключим файл с константами, для апределения корневой директории приложения */
 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/>";
 + }
  
-$file_config = FOLDER . '/includes/config.php'; +// Создание и вызов параметров из .ini файла 
-$file_version = FOLDER . '/version.php'; +//////////////////////////////////////////// 
 +/* задаем переменной  значение $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.ini'; 
 +$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 равно "пустое место" */
Строка 61: Строка 93:
  else {   else { 
  /* Если переменная $default_site равно "выбор в файле конфигуратора"   /* Если переменная $default_site равно "выбор в файле конфигуратора" 
- перенаправить на страницу, указанную в config.php*/+ перенаправить на страницу, указанную в config.ini*/
  header("Location: ../" . "$default_site" . "/");  header("Location: ../" . "$default_site" . "/");
  }  }
Строка 73: Строка 105:
 </code> </code>
  
-Проверим работу страницы test_7.php в веб - браузере, создав поочередно в директории **/ucms** вложенные директории: bcw, blog, video, и sns+Обратите внимание на следующую часть кода: 
 + 
 +<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** 
 +<code> 
 +default_site =  
 +</code> 
 + 
 +{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_28.png|}} 
 + 
 +Приложение перешло на первую по списку директорию. 
 + 
 +Аналогично, для определенной переменной **%%$default_site%%**  
 +<code> 
 +default_site = blog 
 +</code> 
 + 
 +{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_29.png|}} 
 + 
 +===== Логика index.php ===== 
 +  * **ЕСЛИ** ядро приложение не установленно (т.е. отсутствуют файлы **%%version.php%%** и **%%config.ini%%** в директории **%%/includes%%**), то приложение перенаправит в **%%/library/install%%** к файлу **%%install.php%%** 
 +  * **ИНАЧЕ** проверит переменную **%%$default_site%%** в файле **%%config.ini%%** 
 +  * **ЕСЛИ** переменная **%%$default_site = пустое значение%%**, то приложение перенаправит на индексный файл, первой из установленных конфигураций 
 +  * **ИНАЧЕ** получив значение переменной **%%$default_site%%** из файла **%%config.ini%%** перенаправит к **%%index.php%%** установленной конфигурации, указанной пользователем. 
 + 
 +По замыслу пользователь может установит несколько приложений и указать приложение по умолчанию в **%%config.ini%%**,  
 +тогда в корневой директории будет работать указанное приложение, а к остальным будет доступ через ссылку в коде программы 
 +на директория другой конфигурации. К примеру: 
 + 
 +Пользователь установил 2е конфигурации **%%blog%%** и **%%video%%** и выбрал основной конфигурацию **%%blog%%**, тогда  
 +в окне **%%index.php%%** будет работать конфигурация **%%blog%%**, а конфигурацию **%%video%%** будет доступна через 
 +указание директории **%%/video/video.php%%** 
 + 
 +===== Файл index.php ===== 
 +Главным отличием файла **index.php** от **index_test.php** станут: 
 +  * корректировка директорий файлов 
 +  * вынос "логики" в основной файл функций **function.php** с созданием функции **check_start()** 
 +  * вывод конфигурации в "окне" файла **index.php** вместо вывода в отдельной директории 
 +Создадим в директории **/ucms** файл входа в приложение **index.php** 
 + 
 +<code php index.php> 
 +<?php 
 +/* index.php */ 
 +/* подключим файл с константами, для определения корневой  
 + *директории приложении и файлов конфигурации и функций */ 
 +include './includes/cons.php'; 
 +include FOLDER . '/includes/function.php'; 
 +/* запустим функцию проверки первого входа в приложение */ 
 +check_start(); 
 +?> 
 +</code> 
 + 
 +Создадим в директории **/includes** файл **%%function.php%%** и запишем в него нашу первую функцию **%%check_start();%%** 
 + 
 +<code php function.php> 
 +<?php  
 +/* Функция проверки установки ядра приложения и установленной конфигурации */ 
 +function check_start() { 
 + /* Присваиваем переменной $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.ini'; 
 +$file_version = FOLDER . '/version.txt'; 
 +  
 +$bcw_site = FOLDER . '/bcw'; 
 +$blog_site = FOLDER . '/blog'; 
 +$video_site = FOLDER . '/video'; 
 +$sns_site = FOLDER . '/sns'; 
 +   
 +/* Если переменные $file_config и file_exists существуют, 
 +то проверим определение переменной конфигурации $default_site 
 +по умолчанию в файле config.php */ 
 +if (file_exists($file_config) && file_exists($file_version)) { 
 + /* Если переменная $default_site равно "пустое место" */ 
 + if ($default_site  == ''){ 
 +    /* Проверим, что конфигурация установлена в директории /bcw */ 
 + if (file_exists($bcw_site)) { 
 + /* Если директория /bcw существует, перенаправим туда и конец скрипта*/ 
 + header("Location: ./bcw/"); 
 + exit; 
 +
 + /* Проверим, что конфигурация установлена в директории /blog */ 
 + elseif (file_exists($blog_site)) { 
 + /* Если директория /blog существует, перенаправим туда и конец скрипта*/ 
 + header("Location: ./blog/"); 
 + exit; 
 +
 + /* Проверим, что конфигурация установлена в директории /video */ 
 + elseif (file_exists($video_site)) { 
 + /* Если директория /video существует, перенаправим туда и конец скрипта*/ 
 + header("Location: ./video/"); 
 + exit; 
 +
 + /* Проверим, что конфигурация установлена в директории /sns */ 
 + elseif (file_exists($sns_site)) { 
 + /* Если директория /sns существует, перенаправим туда и конец скрипта*/ 
 + header("Location: ./sns/"); 
 + exit; 
 +
 +
 + else {  
 + /* Если переменная $default_site равно "выбор в файле конфигуратора"  
 + перенаправить на страницу, указанную в config.php*/ 
 + header("Location: ./" . "$default_site" . "/"); 
 + exit; 
 +
 + }  
 +/* Если Переменные $file_config или file_exists не существуют, 
 +то перенаправим на страницу установщика install.php */ 
 +else {  
 +    header("Location: ./library/install/install.php"); 
 + exit; 
 +
 +
 +?> 
 +</code> 
 +Откроем в браузере наш файл **/ucms/includes/config.ini** 
 + 
 +{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_30.png|}} 
 + 
 +Как вы уже догадались мы закроем файл **config.ini** файлом **.htaccess** 
 + 
 +<code php .htaccess> 
 +# запретим просмотр файлов с расширением .ini следующих файлов 
 +# (задается правило для перенаправления) 
 +# config.ini 
 +RewriteEngine On 
 +RewriteRule ^(config)\.ini$ - [R=403,L,NC] 
 +</code>
  
-{{:software:development:demo:cms:ucms:ucms_creat_42.png?|}}+{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_31.png|}}
  
 <note blue> <note blue>
-<wrap left>← [[software:development:demo:cms:ucms:readme|6.1. Файл readme.txt]]</wrap>  +<wrap left>← [[software:development:demo:cms:ucms:creating_installer_directories|8.1. Создание директорий установщика]]</wrap>  
-<wrap right>[[software:development:demo:cms:ucms:version|7.1. Файл version.php]] →</wrap>+<wrap right>[[software:development:demo:cms:ucms:creating_file_lang|8.3. Файл lang.php]] →</wrap>
 </note> </note>
  
software/development/demo/cms/ucms/index.1746729953.txt.gz · Последнее изменение: vladpolskiy