====== 8.2. Файл index.php ====== ===== Введение ===== Данный файл является **Индексным файлом** — это файл главной страницы директории на сайте, то есть тот файл, который загружается, когда посетитель обращается напрямую к директории. В нашем приложении Файл index.php - это точка входа. ===== Логика index_test.php ===== * **ЕСЛИ** ядро приложение не установленно (т.е. отсутствуют файлы **%%version.txt%%** и **%%config.ini%%** в директории **%%/includes%%**), то приложение выведит в окне **%%/library/install%%** к файлу **%%install.php%%** * **ИНАЧЕ** проверит переменную **%%$default_site%%** в файле **%%config.ini%%** * **ЕСЛИ** переменная **%%$default_site = пустое значение%%**, то приложение выведит в окне индексный файл, первой из установленных конфигураций * **ИНАЧЕ** получив значение переменной **%%$default_site%%** из файла **%%default_site%%** перенаправит к **%%install.php%%** - индексный файл установленной конфигурации, указанный пользователем. ===== Файл index_test.php ===== Создадим Файл **index_test.php** в **/ucms** с кодом: "; /* Иначе выводим запись о существовании*/ } else { echo "Файл $file_config не существует". "
"; } // Создание и вызов параметров из .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 . "
"; } else { echo "Ошибка чтения INI-файла."; } //exit; /* зададим переменным файлы и директории */ $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.ini */ 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.ini*/ header("Location: ../" . "$default_site" . "/"); } } /* Если Переменные $file_config или file_exists не существуют, то перенаправим на страницу установщика install.php */ else { header("Location: ../library/install/install.php"); } ?>
Обратите внимание на следующую часть кода: } //exit; /* зададим переменным файлы и директории */ * **%%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** и записываем {{: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** "; /* Иначе выводим запись о существовании*/ } else { echo "Файл $file_config не существует". "
"; } $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 . "
"; } 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; } ?>
:!: **Примечание:**\\ Ранее **config.ini** создавали мы, значит и владелец файла на запись и чтение тоже мы, а нам необходимо передать права нашему приложению. Заодно проверим код записи в файл. Удалим созданный нами файл **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** default_site = {{:software:development:demo:cms:ucms:ucms_kernel_demo_book_28.png|}} Приложение перешло на первую по списку директорию. Аналогично, для определенной переменной **%%$default_site%%** default_site = blog {{: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** Создадим в директории **/includes** файл **%%function.php%%** и запишем в него нашу первую функцию **%%check_start();%%** Откроем в браузере наш файл **/ucms/includes/config.ini** {{:software:development:demo:cms:ucms:ucms_kernel_demo_book_30.png|}} Как вы уже догадались мы закроем файл **config.ini** файлом **.htaccess** # запретим просмотр файлов с расширением .ini следующих файлов # (задается правило для перенаправления) # config.ini RewriteEngine On RewriteRule ^(config)\.ini$ - [R=403,L,NC] {{:software:development:demo:cms:ucms:ucms_kernel_demo_book_31.png|}} ← [[software:development:demo:cms:ucms:creating_installer_directories|8.1. Создание директорий установщика]] [[software:development:demo:cms:ucms:creating_file_lang|8.3. Файл lang.php]] →