====== 8.4. Файл lang_and_time_zone.php ======
Этот файл выполняет функцию начального экрана установщика и предоставляет пользователю выбор язык
приложения и временную зону, а также создает файл конфигурации **config.php** в директории **/includes/**
и записывает в него переменные **$lang_select** и **$timezone_select**, полученные из форм выбора.
* **$lang_select** - выбор языка приложения (русский и англиский, при необходимости можно добавлять переводы)
* **$timezone_select** - время сервера приложения (время написания поста, время отправки сообщений и т.д.)
===== Формы =====
* **form action="install.php"** - указывает обработчик, к которому обращаются данные формы при их отправке на сервер.
В нашем случае это переход к файлу **install.php** (подробнее файл install.php будет описан в Главе 8.6).
* **input type="radio"** - переключатель
* **method="post"** - в отличие от метода **GET**, который используется для получения данных, **POST** служит для отправки данных на сервер.
* **id="lang_english"** - идентификатор формы
* **name="lang_selection"** - имя формы
* **value="english"** - принимаемое значение
* **checked** - определяет выбор формы переключателя (т.е. выбран по умолчанию)
* **label for="lang_english"** - надпись для элимента
* **br** - перенос на следующую строку
==== Выпадающий список ====
Используется для выбора часового пояса работы сервера, т.е. при физически установленном сервере в Дании
и использовании Приложения для русскоязычного населения, бедет отображаться время комминтариев "Московское".
* **select type="text"** - выпадающий список
* **name="timezone_selection"** - имя формы
* **option value=** - определитель значение пункта списка, которое будет отправлено на сервер.
Идентификатор формы, надпись для элимента и перенос на следующую строку не указываем т.к. в примере
выше мы это сделали для "Чистоты кода" и на логику работы кода это не влияет (т.е. для наглядности
примера, а именно: **select type="text"** - определяет выпадающий список, **name="timezone_selection"**
- имя формы из которого данные получит переменная и **option value=** - значение пункта формы).
Значение пункта данной формы - это всего лишь время добавляемое к времени часового пояса места установки
сервера (т.е. -2, -1, 0, +1 и т.д.) и мы могли бы это записать, но для наглядности пропишем именно обозначения
"таймзон". Полный список зон можно выбрать из формы ниже:
Данная форма выбора будет рассмотрена в [[software:development:demo:cms:ucms:appendix_c|Приложении C]] этого руководства,
пока же нас интересует 26 часовых поясов для выбора (от -11 до +14).
* **input** - интерактивный элемент управления
* **type=** - тип элемента для отображения
* **"submit"** - кнопка для отправки формы
* **value=** - значение элемента управления, в нашем случае это название кнопки "Продолжить"
* **name="lang_and_time_zone"** - имя формы, которое отправляется вместе с данными формы
Кнопку **"Назад"** логично расположить по левому краю формы, а кнопку **"Вперед"** или **"Продолжить"** по правому.
Это мы позже и пропишем в файле **install.css**.
* **%%
if(isset($_POST['lang_selection']) && isset($_POST['timezone_selection']))
{тут мы проверим, нажатие кнопки и запишем логику создания файла config.txt}
* **%%if(...)%%** - логический оператор условия **ЕСЛИ**
* **%%isset(...)%%** - функция определения инициализации переменной
* **%%$_POST['lang_selection']%%** - глобальный ассоциативный массив **$_POST** с данными из нашей формы "Переключателя" по имени **name="lang_selection"**
* **%%&&%%** - логический оператор **И**
* **%%$_POST['timezone_selection']%%** - глобальный ассоциативный массив **$_POST** с данными из нашей формы "Выпадающего списка" по имени **name="timezone_selection"**
Проверим что кнопка **button_lang_and_time_zone** нажата (необходимо чтобы наш код выполнялся только по нажатию, и не выполнялся
при открытии, либо перезагрузке страницы).
if(isset($_POST['button_lang_and_time_zone'])) {$bam="ИСТИНА";
echo "Кнопка нажата и переменной bam присвоенно значение = " . "$bam";
file_put_contents("config.txt","Hello World. Testing!");
echo "Файл config.txt создан и данные записаны!";
} else {$bam="ЛОЖЬ";
echo "Кнопка не нажата и переменной bam присвоенно значение = " . "$bam";
}
* **%%if(...){...}%%** - логический оператор условия **ЕСЛИ**
* **%%isset(...)%%** - функция определения инициализации переменной
* **%%$_POST['button_lang_and_time_zone']%%** - глобальный ассоциативный массив **$_POST** с данными из нашей формы "Кнопка" по имени **name="button_lang_and_time_zone"**
* **%%$bam="ИСТИНА"%%** - переменной **%%$bam%%** присвоили значение ="ИСТИНА"
* **%%echo "...."%%** - вывели текст нажатия кнопки и значение "ИСТИНА" присвоенное переменной **%%$bam%%**
* **%%else(...){...}%%** - логическая конструкция **ИНАЧЕ** оператора условия **ЕСЛИ**
* **%%$bam="ЛОЖЬ"%%** - переменной **%%$bam%%** присвоили значение ="ЛОЖЬ"
* **%%echo "...."%%** - вывели текст нажатия кнопки и значение "ЛОЖЬ" присвоенное переменной **%%$bam%%**
* **%%file_put_contents%%** - функция записи данных в файл запишет **Hello World. Testing!** в файл **config.txt**
Описанный выше код проверит условие:\\
ЕСЛИ кнопка нажата, присвоится переменной значение ИСТИНА и выведиться текст "Кнопка нажата" и значение переменной,
а так же в этой-же директории будет создан файл **config.txt** и в него будет записано сообщение: Hello World. Testing!,
ИНАЧЕ присвоится той же переменной значение ЛОЖЬ и выведиться текст "Кнопка не нажата" и значение переменной
====Файл test_3====
Создадим в директории **/ucms/test/** файл **test_3.php**, объединим выше разобранный нами код и запишем во
вновь созданный файл следующее:
$file_lang_and_time_zone = '../../includes/config.php';
file_put_contents($file_lang_and_time_zone, ' ' . "\n", FILE_APPEND);
header("Location: server_check.php");
* **%%$file_lang_and_time_zone = '../../includes/config.php';%%** - присвоим переменной **%%$file_lang_and_time_zone"%%** значение, указывающее путь к директории **/includes/**, где будет создан файл **%%config.php%%**
* **%%../../includes/config.php%%** - значение вновь создаваемого файла **%%config.php%%** в директории **/includes/**.
* **%%file_put_contents%%** - функция PHP записи в файл **%%config.php%%** месторасположение которого присвоенно переменной **%%$file_lang_and_time_zone"%%**
* **%% %%** - записывается определение конца границы выполнения кода PHP
* **%%header("Location:%%** - перенаправление к коду файла проверки сервера **server_check.php**
В результате в файле **%%config.php%%** получим следующую запись:
где переменной **%%$lang_select%%** присвоенно значение языка по умолчанию, т.е **english**, а переменной
**%%$timezone_select%%** - присвоенно значение часовой зоны **Pacific/Kiritimati**
{{:software:development:demo:cms:ucms:ucms_creat_26.png?|}}
* в конец нашего файла добавим следующий код "Прогресс-бара", чтобы пользователь знач, где он в данный момент находиться.
include "../../includes/cons.php";
$file_config = FOLDER . '/includes/config.php';
if (file_exists($file_config)) {
/* Вызов header, перенаправит пользователя на страницу
/options.php в этой же директории */
header("Location: options.php");
} else {
Сюда будет записан весь наш код формы
}
* **%%include "../../includes/cons.php";%%** - включает и оценивает код файла **cons.php** из диретории **/includes/** как PHP-код
* **%%$file_config = FOLDER . '/includes/config.php';%%** - переменной **%%$file_config%%** присвоили значение **%%/includes/config.php%%** (местонахождения файла **config.php**)
* **%%if(...){...}%%** - логический оператор условия **ЕСЛИ**
* **%%file_exists(...)%%** - функция проверки существования указанного файла или каталога.
* **%%header("Location: options.php")%%** - функция перенаправления пользователя к файлу **options.php**.
* **%%else{...}%%** - логическая конструкция **ИНАЧЕ** оператора условия **ЕСЛИ**
Ниже приведен отредактированный и имеющий заключительный вид код файла lang_and_time_zone.php
' . "\n", FILE_APPEND);
header("Location: server_check.php");
}
}
}
?>
Запишем его в тело файла **lang_and_time_zone.php** и откроем его в окне браузера для проверки, где после отправки формы
у нас созается файл **config.php** с данными и браузер нас перенаправляет на страницу проверки сервера **server_check.php**
о которой речь пойдет в следующей главе [[software:development:demo:cms:ucms:creating_file_server_check|8.5. Файл server_check.php]],
а пока мы получим пустое окно.
{{:software:development:demo:cms:ucms:ucms_creat_27.png?|}}
Если мы повторно в адресной строке браузера набирем путь к нашему файлу **lang_and_time_zone.php**, то нас приложение перенаправит
на страницу выбора конфигурации установки **options.php**
{{:software:development:demo:cms:ucms:ucms_creat_28.png?|}}