| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | 
| software:development:demo:cms:ucms:creating_file_lang_and_time_zone [2025/05/03 10:53]  – внешнее изменение 127.0.0.1 | software:development:demo:cms:ucms:creating_file_lang_and_time_zone [2025/05/09 13:21] (текущий)  – [8.4. Файл lang_and_time_zone.php]  vladpolskiy | 
|---|
|   * **form action="install.php"** - указывает обработчик, к которому обращаются данные формы при их отправке на сервер. |   * **form action="install.php"** - указывает обработчик, к которому обращаются данные формы при их отправке на сервер. | 
| В нашем случае это переход к файлу **install.php** (подробнее файл install.php будет описан в Главе 8.6). | В нашем случае это переход к файлу **install.php** (подробнее файл install.php будет описан в Главе 8.6). | 
|   | <note red>  | 
|   |  :!: **Внимание:** \\    | 
|   | Файл **lang_and_time_zone.php** будет подключен внутри и будет отображать данные в теле   | 
|   | файла **install.php**, поэтому **form action="install.php"** будет просто обновлять страницу при отправки   | 
|   | данных на сервер.  | 
|   | </note>  | 
|   |   * **method="post"** - в отличие от метода **GET**, который используется для получения данных, **POST** служит для отправки данных на сервер. | 
| В файле **lang_and_time_zone.php** у нас будет два вида формы для наглядности  | В файле **lang_and_time_zone.php** у нас будет два вида формы для наглядности  | 
|   * **input type="radio"** - переключатель  |   * **input type="radio"** - переключатель  | 
| <br> | <br> | 
| </code> | </code> | 
| input type="radio" - переключатель  |   * **input type="radio"** - переключатель  | 
| method="post" - в отличие от метода **GET**, который используется для получения данных,   |   * **method="post"** - в отличие от метода **GET**, который используется для получения данных, **POST** служит для отправки данных на сервер.  | 
| POST служит для отправки данных на сервер.  |   * **id="lang_english"** - идентификатор формы  | 
| id="lang_english" - идентификатор формы  |   * **name="lang_selection"** - имя формы   | 
| name="lang_selection" - имя формы   |   * **value="english"** - принимаемое значение  | 
| value="english" - принимаемое значение  |   * **checked** - определяет выбор формы переключателя (т.е. выбран по умолчанию)  | 
| checked - определяет выбор формы переключателя (т.е. выбран по умолчанию)  |   * **label for="lang_english"** - надпись для элимента   | 
| label for="lang_english" - надпись для элимента   |   * **br** - перенос на следующую строку | 
| br - перенос на следующую строку |  | 
 |  | 
| Создадим в директории **/ucms/library/install/** файл **lang_and_time_zone.php** и запишем в него   | ==== Выпадающий список ====  | 
| следующий код:  | Используется для выбора часового пояса работы сервера, т.е. при физически установленном сервере в Дании   | 
| <code php lang_and_time_zone.php>  | и использовании Приложения для русскоязычного населения, бедет отображаться время комминтариев "Московское".  | 
| <form action="install.php" method="post"> |   | 
|   | <code>  | 
|   | <select type="text" name="timezone_selection">  | 
|   |     <option value="Europe/Moscow">Europe/Moscow +03:00</option>  | 
|   |     <option value="Europe/Amsterdam">Europe/Amsterdam +01:00</option>  | 
|   |     <option value="Europe/Dublin">Europe/Dublin +00:00</option>  | 
|   |     <option value="Europe/Samara">Europe/Samara +04:00</option>   | 
|   | </select>  | 
|   | </code>   | 
|   |   | 
|   |   * **select type="text"** - выпадающий список  | 
|   |   * **name="timezone_selection"** - имя формы   | 
|   |   * **option value=** - определитель значение пункта списка, которое будет отправлено на сервер.  | 
|   |     | 
|   | Идентификатор формы, надпись для элимента и перенос на следующую строку не указываем т.к. в примере   | 
|   | выше мы это сделали для "Чистоты кода" и на логику работы кода это не влияет (т.е. для наглядности   | 
|   | примера, а именно: **select type="text"** - определяет выпадающий список, **name="timezone_selection"**   | 
|   | - имя формы из которого данные получит переменная и **option value=** - значение пункта формы).  | 
|   |   | 
|   | Значение пункта данной формы - это всего лишь время добавляемое к времени часового пояса места установки   | 
|   | сервера (т.е. -2, -1, 0, +1 и т.д.) и мы могли бы это записать, но для наглядности пропишем именно обозначения  | 
|   | "таймзон". Полный список зон можно выбрать из формы ниже:  | 
|   | <html>  | 
|   | <iframe height="450" style="width: 100%;" scrolling="no" title="Untitled" src="./demo/code/timezone/timezone-picker/index.htm" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">  | 
|   | </iframe>  | 
|   | </html>  | 
|   |   | 
|   | Данная форма выбора будет рассмотрена в [[software:development:demo:cms:ucms:appendix_c|Приложении C]] этого руководства,   | 
|   | пока же нас интересует 26 часовых поясов для выбора (от -11 до +14).  | 
|   | <code>  | 
|   |     <option value="Pacific/Kiritimati">Pacific/Kiritimati +14:00</option>  | 
|   |     <option value="Pacific/Tongatapu">Pacific/Tongatapu +13:00</option>  | 
|   |     <option value="Pacific/Majuro">Pacific/Majuro +12:00</option>  | 
|   |     <option value="Pacific/Pohnpei">Pacific/Pohnpei +11:00</option>  | 
|   |     <option value="Australia/Melbourne">Australia/Melbourne +10:00</option>   | 
|   |     <option value="Asia/Tokyo">Asia/Tokyo +09:00</option>   | 
|   |     <option value="Asia/Hong_Kong">Asia/Hong_Kong +08:00</option>  | 
|   |     <option value="Asia/Bangkok">Asia/Bangkok +07:00</option>   | 
|   |     <option value="Asia/Bishkek">Asia/Bishkek +06:00</option>   | 
|   |     <option value="Indian/Maldives">Indian/Maldives +05:00</option>  | 
|   |     <option value="Asia/Dubai">Asia/Dubai +04:00</option>   | 
|   |     <option value="Europe/Moscow">Europe/Moscow +03:00</option>  | 
|   |     <option value="Europe/Helsinki">Europe/Helsinki +02:00</option>   | 
|   |     <option value="Europe/Bratislava">Europe/Bratislava +01:00</option>  | 
|   |     <option value="Europe/Dublin">Europe/Dublin +00:00</option>  | 
|   |     <option value="Atlantic/Azores">Atlantic/Azores -01:00</option>  | 
|   |     <option value="Atlantic/South_Georgia">Atlantic/South_Georgia -02:00</option>  | 
|   |     <option value="America/Sao_Paulo">America/Sao_Paulo -03:00</option>  | 
|   |     <option value="America/Montserrat">America/Montserrat -04:00</option>  | 
|   |     <option value="America/Jamaica">America/Jamaica -05:00</option>  | 
|   |     <option value="America/Regina">America/Regina -06:00</option>  | 
|   |     <option value="America/Denver">America/Denver -07:00</option>  | 
|   |     <option value="America/Vancouver">America/Vancouver -08:00</option>  | 
|   |     <option value="America/Sitka">America/Sitka -09:00</option>  | 
|   |     <option value="Pacific/Tahiti">Pacific/Tahiti -10:00</option>  | 
|   |     <option value="Pacific/Midway">Pacific/Midway -10:00</option>  | 
|   | </code>   | 
|   | <note blue>  | 
|   |  :&11: **Пимечание:** \\  Данный код приложения, это всего лишь установщик выводимого времени и нам нет   | 
|   |  смысла создавать отдельный файл **timezones.php** с массивом со всеми **418** часовыми зонами, т.к.  | 
|   |  установщик - это не основное приложение, а визуально понятный сборщик данных для корректной работы  | 
|   |  нашего приложения. Файл **timezones.php** с массивом будет описан в [[software:development:demo:cms:ucms:appendix_c|Приложении C]] этого руководства.  | 
|   | </note>  | 
|   |   | 
|   | ==== Кнопка ====  | 
|   | <code>   | 
|   | 	<div class = "button_lang_and_time_zone">  | 
|   | 	<input type="submit" value="Продолжить" name="button_lang_and_time_zone">  | 
|   | 	</div>  | 
|   | </code>   | 
|   |   * **input** - интерактивный элемент управления    | 
|   |   * **type=** - тип элемента для отображения  | 
|   |   * **"submit"** - кнопка для отправки формы  | 
|   |   * **value=** - значение элемента управления, в нашем случае это название кнопки "Продолжить"  | 
|   |   * **name="lang_and_time_zone"** - имя формы, которое отправляется вместе с данными формы  | 
|   |   | 
|   | <note blue>  | 
|   |  :&11: **Пимечание:** \\     | 
|   |  Код приведенный ниже, это всего лишь обертка нашей формы, к классу **button_lang_and_time_zone** позже  | 
|   |  будут подключенны стили ранее созданного (пока пустого) файла [[software:development:demo:cms:ucms:creating_file_install_css|install.css]] в директории **css**.  | 
|   |  <code>   | 
|   | 	<div class = "button_lang_and_time_zone">  | 
|   | 	</div>  | 
|   | </code>   | 
|   | Кнопку **"Назад"** логично расположить по левому краю формы, а кнопку **"Вперед"** или **"Продолжить"** по правому.   | 
|   | Это мы позже и пропишем в файле **install.css**.  | 
|   | </note>  | 
|   | **div class = "button_lang_and_time_zone"** - создан нами заранее, что-бы в [[software:development:demo:cms:ucms:creating_file_install_css|Главе 8.6. Файл install.css]] при указании  | 
|   | стиля кнопки соблюсти последовательность написания данного руководства и нам в дальнейшем не прийдется  | 
|   | вазвращатся в Файл **lang_and_time_zone.php** для "обертывания" нашей кнопки.  | 
|   | ===== Логика формы =====  | 
|   | У нас имеется переключатель языков с выбранным по умолчанию Английским языком и поле выбора часовой зоны,   | 
|   | с **Pacific/Kiritimati +14:00** по умолчанию (первая в списке выбора) и кнопка "Продолжить".\\    | 
|   | При нажатии кнопки будет проверенно условие, что выбор произведен, либо оставлен по умолчанию   | 
|   | (это нам понадобиться позже для того, чтобы по умолчанию программа вывела нам язык и часовую  | 
|   | зону сервера). Следом будет создан файл конфигурации приложения **config.php** и в него запишется наш   | 
|   | выбор в виде объявленных переменных **$lang_select** и **$timezone_select**. После этого  | 
|   | приложение направит нас к файлу проверки сервера **server_check.php**  | 
|   |   | 
|   | <code>  | 
|   | <?php  | 
|   | $lang_select = $_POST['lang_selection'];  | 
|   | $timezone_select = $_POST['timezone_selection'];  | 
|   | </code>  | 
|   |   * **%%<?php%%** - определяем начало границы выполнения кода PHP  | 
|   |   * **%%$lang_select = $_POST['lang_selection'];%%** - объявляем переменную **$lang_select** и присваиваем ей значение с помощью глобального ассоциативного массива **$_POST** данные из нашей формы "Переключателя" по имени **name="lang_selection"**  | 
|   |   * **%%$timezone_select = $_POST['timezone_selection'];%%** - объявляем переменную **$timezone_selection** и присваиваем ей значение с помощью глобального ассоциативного массива **$_POST** данные из нашей формы "Выпадающего списка" по имени **name="timezone_selection"**  | 
|   |   | 
|   | Проверим что переменные **lang_selection** и **timezone_selection** определены  | 
|   | <code>  | 
|   | if(isset($_POST['lang_selection']) && isset($_POST['timezone_selection']))  | 
|   | {тут мы проверим, нажатие кнопки и запишем логику создания файла config.txt}  | 
|   | </code>  | 
|   |   * **%%if(...)%%** - логический оператор условия **ЕСЛИ**  | 
|   |   * **%%isset(...)%%** - функция определения инициализации переменной    | 
|   |   * **%%$_POST['lang_selection']%%** - глобальный ассоциативный массив **$_POST** с данными из нашей формы "Переключателя" по имени **name="lang_selection"**  | 
|   |   * **%%&&%%** - логический оператор **И**    | 
|   |   * **%%$_POST['timezone_selection']%%** - глобальный ассоциативный массив **$_POST** с данными из нашей формы "Выпадающего списка" по имени **name="timezone_selection"**  | 
|   | Проверим что кнопка **button_lang_and_time_zone** нажата (необходимо чтобы наш код выполнялся только по нажатию, и не выполнялся  | 
|   | при открытии, либо перезагрузке страницы).  | 
|   | <code>  | 
|   | 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";  | 
|   | }  | 
|   | </code>  | 
|   |   * **%%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**, объединим выше разобранный нами код и запишем во  | 
|   | вновь созданный файл следующее:  | 
|   | <code php test_3.php>  | 
|   | <!--  test_3.php  -->  | 
|   |   | 
|   | <form action="test_3.php" method="post"> | 
| Выберите язык приложения: <br/> | Выберите язык приложения: <br/> | 
| <!-- Переключатель --> |   | 
|   <input type="radio" method="post" id="lang_english" name="lang_selection" value="english" checked />  |   <input type="radio" method="post" id="lang_english" name="lang_selection" value="english" checked />  | 
|   <label for="lang_english">English</label> |   <label for="lang_english">English</label> | 
 |  | 
| Выберите часовой пояс: <br/> | Выберите часовой пояс: <br/> | 
| <!-- Выпадающий список --> |   | 
| <select type="text" name="timezone_selection"> | <select type="text" name="timezone_selection"> | 
|   |     <option value="Pacific/Kiritimati">Pacific/Kiritimati +14:00</option> | 
|   |     <option value="Pacific/Tongatapu">Pacific/Tongatapu +13:00</option> | 
|   |     <option value="Pacific/Majuro">Pacific/Majuro +12:00</option> | 
|   |     <option value="Pacific/Pohnpei">Pacific/Pohnpei +11:00</option> | 
|   |     <option value="Australia/Melbourne">Australia/Melbourne +10:00</option>  | 
|   |     <option value="Asia/Tokyo">Asia/Tokyo +09:00</option>  | 
|   |     <option value="Asia/Hong_Kong">Asia/Hong_Kong +08:00</option> | 
|   |     <option value="Asia/Bangkok">Asia/Bangkok +07:00</option>  | 
|   |     <option value="Asia/Bishkek">Asia/Bishkek +06:00</option>  | 
|   |     <option value="Indian/Maldives">Indian/Maldives +05:00</option> | 
|   |     <option value="Asia/Dubai">Asia/Dubai +04:00</option>  | 
|     <option value="Europe/Moscow">Europe/Moscow +03:00</option> |     <option value="Europe/Moscow">Europe/Moscow +03:00</option> | 
|     <option value="Europe/Amsterdam">Europe/Amsterdam +01:00</option> |     <option value="Europe/Helsinki">Europe/Helsinki +02:00</option>   | 
|   |     <option value="Europe/Bratislava">Europe/Bratislava +01:00</option> | 
|     <option value="Europe/Dublin">Europe/Dublin +00:00</option> |     <option value="Europe/Dublin">Europe/Dublin +00:00</option> | 
|     <option value="Europe/Samara">Europe/Samara +04:00</option>  |     <option value="Atlantic/Azores">Atlantic/Azores -01:00</option>  | 
|   |     <option value="Atlantic/South_Georgia">Atlantic/South_Georgia -02:00</option>  | 
|   |     <option value="America/Sao_Paulo">America/Sao_Paulo -03:00</option>  | 
|   |     <option value="America/Montserrat">America/Montserrat -04:00</option>  | 
|   |     <option value="America/Jamaica">America/Jamaica -05:00</option>  | 
|   |     <option value="America/Regina">America/Regina -06:00</option>  | 
|   |     <option value="America/Denver">America/Denver -07:00</option>  | 
|   |     <option value="America/Vancouver">America/Vancouver -08:00</option>  | 
|   |     <option value="America/Sitka">America/Sitka -09:00</option>  | 
|   |     <option value="Pacific/Tahiti">Pacific/Tahiti -10:00</option>  | 
|   |     <option value="Pacific/Midway">Pacific/Midway -10:00</option> | 
| </select> | </select> | 
| 	<div class = "install_button"> | 	<div class = "install_button"> | 
| 	<input type="submit" value="Продолжить" name="button"> | 	<input type="submit" value="Продолжить" name="button_lang_and_time_zone"> | 
| 	</div> | 	</div> | 
| </form> | </form> | 
| if(isset($_POST['lang_selection']) && isset($_POST['timezone_selection'])) | if(isset($_POST['lang_selection']) && isset($_POST['timezone_selection'])) | 
| { | { | 
| if(isset($_POST['button'])) {$bam=TRUE;  | if(isset($_POST['button_lang_and_time_zone'])) {$bam="ИСТИНА";  | 
| //добавляем текст в конец файла config.php  | echo "Кнопка нажата и переменной bam присвоенно значение = " . "$bam" . '<br/>';  | 
| $filename = 'config.php'; | echo "$lang_select" . '<br/>';  | 
|   | echo "$timezone_select" . '<br/>';  | 
|   | file_put_contents("config.txt","Hello World. Testing!");  | 
|   | echo "Файл config.txt создан и данные записаны!";  | 
|   | }  | 
|   | }  | 
|   | else {$bam="ЛОЖЬ";   | 
|   | echo "Кнопка не нажата и переменной bam присвоенно значение = "  . "$bam" . '<br/>';  | 
|   | echo "$lang_select" . '<br/>';  | 
|   | echo "$timezone_select" . '<br/>';  | 
|   | }  | 
|   | ?>  | 
|   | </code>  | 
|   | И откроем файл **test_3.php** в браузере для проверки работы логики приложения  | 
|   |   | 
|   | {{:software:development:demo:cms:ucms:ucms_creat_22.png?|}}  | 
|   |   | 
|   | Как видно в окне приложения, кнопка "Продолжить" еще не нажата, поэтому выводится сообщение:  | 
|   | Кнопка не нажата и переменной bam присвоенно значение = ЛОЖЬ. При этом значения переменных   | 
|   | **%%$lang_select"%%** и **%%$timezone_select%%** не выводятся, по причине не активности кнопки формы.   | 
|   |   | 
|   | Не трогаем окна выбора, а просто обновим окно браузера, ничего не измениться, т.к. работает проверка  | 
|   | нажатия кнопки. Активируем кнопку "Продолжить":  | 
|   | Получаем сообщение: Кнопка нажата и переменной bam присвоенно значение = ИСТИНА, а так-же значения  | 
|   | переменных **%%$lang_select"%%** = english и **%%$timezone_select%%** = Pacific/Kiritimati указанные   | 
|   | по умолчанию, т.е. когда переключатели мы не трогали и самое главное: в директории **/ucms/test/**   | 
|   | появился файл **config.txt**, а чем нас уведомило сообщение: Файл config.txt создан и данные записаны!  | 
|   |   | 
|   | {{:software:development:demo:cms:ucms:ucms_creat_23.png?|}}  | 
|   |   | 
|   | Проверим наш созданный файл **config.txt** и убеждаемся, что текст **Hello World. Testing!** записан.  | 
|   |   | 
|   | {{:software:development:demo:cms:ucms:ucms_creat_25.png?|}}  | 
|   |   | 
|   | Выбирем другой язык, а так же другой часовой пояс и нажмем кнопку Продолжить  | 
|   |   | 
|   | {{:software:development:demo:cms:ucms:ucms_creat_24.png?|}}  | 
|   |   | 
|   | Мы видим, что переменные **%%$lang_select"%%** и **%%$timezone_select%%** приняли другие значения.  | 
|   | На этом проверку логики закончим.  | 
|   | ===== 8.4. Файл lang_and_time_zone.php =====  | 
|   |   | 
|   | Откроем в блокноте созданный ранее в директории **/ucms/library/install/** файл **lang_and_time_zone.php** и запишем в него   | 
|   | код из файла **test_3.php**, убрав лишнее, а именно:  | 
|   |   * вывод на экран сообщений о нажатии кнопки и присвоении переменным **%%$lang_select"%%** и **%%$timezone_select%%**   | 
|   | значений, а так-же вывод на экран сообщения Файл config.txt создан и данные записаны!  | 
|   | Так-же откорректируем код в части  form action="test_3.php"  | 
|   |   * заменим **form action="test_3.php"** на **form action="install.php"**  | 
|   |   * заменим **file_put_contents("config.txt","Hello World. Testing!");"** на приведенный ниже код:  | 
|   |   | 
|   | <code>  | 
|   | $file_lang_and_time_zone = '../../includes/config.php';  | 
|   | file_put_contents($file_lang_and_time_zone, '<?php ' . "\n", FILE_APPEND);  | 
|   | file_put_contents($file_lang_and_time_zone, '$lang_select' . ' = ' . '"' . $lang_select . '"' . '; ' . "\n", FILE_APPEND);  | 
|   | file_put_contents($file_lang_and_time_zone, '$timezone_select' . ' = ' . '"' . $timezone_select . '"' . '; ' . "\n", FILE_APPEND);  | 
|   | file_put_contents($file_lang_and_time_zone, '?> ' . "\n", FILE_APPEND);  | 
|   | header("Location: server_check.php");  | 
|   | </code>  | 
|   |   * **%%$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 %%** - записывается определение начала границы выполнения кода PHP  | 
|   |   * **%%\n%%** - записывается символ перевода строки кода PHP  | 
|   |   * **%%, FILE_APPEND%%** - флаг записи данных в конец файла, вместо перезаписи  | 
|   |   * **%%$lang_select%%** - записывается переменная **%%$lang_select%%**  | 
|   |   * **%% = %%** - записывается логический знак **%%=%%**(равно)  | 
|   |   * **%%$lang_select%%** - записывается **значение!** переменной **%%$lang_select%%** присвоенное ранее из формы  | 
|   | То-же самое прописанно и для переменной **%%$timezone_select%%**  | 
|   |   * **%%?> %%** - записывается определение конца границы выполнения кода PHP  | 
|   |   * **%%header("Location:%%** - перенаправление к коду файла проверки сервера **server_check.php**  | 
|   | В результате в файле **%%config.php%%** получим следующую запись:  | 
|   | <code>  | 
|   | <?php   | 
|   | $lang_select = "english";   | 
|   | $timezone_select = "Pacific/Kiritimati";   | 
|   | ?>   | 
|   | </code>  | 
|   | где переменной **%%$lang_select%%** присвоенно значение языка по умолчанию, т.е **english**, а переменной  | 
|   | **%%$timezone_select%%** - присвоенно значение часовой зоны  **Pacific/Kiritimati**  | 
|   |    | 
|   | {{:software:development:demo:cms:ucms:ucms_creat_26.png?|}}   | 
|   |     | 
|   |   * в конец нашего файла добавим следующий код "Прогресс-бара", чтобы пользователь знач, где он в данный момент находиться.  | 
|   |   | 
|   | <code>  | 
|   | <?php   | 
|   | <div class="progressbar">  | 
|   |   <span style="width: 20%"></span>  | 
|   | </div>   | 
|   | </code>   | 
|   |   | 
|   | <note blue>  | 
|   |  :&11: **Пимечание:** \\     | 
|   |  Код приведенный выше, это всего лишь обертка блока "Погресс-бара", который будет написан на чистом   | 
|   | css и пока соответственно мы его не видим. Позже будут подключенны стили ранее созданного (пока пустого) файла  | 
|   | [[software:development:demo:cms:ucms:creating_file_install_css|install.css]] в директории **css** и "Погресс-бар" отобразиться.  | 
|   | </note>  | 
|   |   | 
|   | В заключении мы добавим проверку того, что если это не первая установка, т.е. файл **config.php** существует в  | 
|   | директории **/includes**, то окно выбора языка и часовой зоны будет пропущенно и приложение переадресует нас к выбору  | 
|   | устанавливаемой конфигурации приложения (блог, видеохостинг и.д.), за что будет отвечать файл **options.php**.  | 
|   |   | 
|   | Код проверки приведен ниже:  | 
|   | <code>  | 
|   | include "../../includes/cons.php";  | 
|   | $file_config = FOLDER . '/includes/config.php';  | 
|   | if (file_exists($file_config)) {  | 
|   | 	/* Вызов header, перенаправит пользователя на страницу  | 
|   | 	/options.php в этой же директории */  | 
|   |     header("Location: options.php");  | 
|   | } else {   | 
|   | Сюда будет записан весь наш код формы  | 
|   | }  | 
|   | </code>  | 
|   |   * **%%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  | 
|   |     | 
|   | <code php lang_and_time_zone.php>  | 
|   | <?php  | 
|   | include "../../includes/cons.php";  | 
|   | $file_config = FOLDER . '/includes/config.php';  | 
|   | if (file_exists($file_config)) {  | 
|   | 	/* Вызов header, перенаправит пользователя на страницу  | 
|   | 	/options.php в этой же директории */  | 
|   |     header("Location: options.php");  | 
|   | } else {   | 
|   | $lang_select = $_POST['lang_selection'];  | 
|   | $timezone_select = $_POST['timezone_selection'];  | 
|   | // Проверим что lang_selection и timezone_selection определены  | 
|   | if(isset($_POST['lang_selection']) && isset($_POST['timezone_selection']))  | 
|   | {  | 
|   | if(isset($_POST['button_lang_and_time_zone'])) {  | 
|   | //добавляем текст и значения переменных $lang_select и timezone_select  | 
|   | //в конец создаваемого файла config.php  | 
|   | $filename = '../../includes/config.php'; | 
| file_put_contents($filename, '<?php ' . "\n", FILE_APPEND); | file_put_contents($filename, '<?php ' . "\n", FILE_APPEND); | 
| file_put_contents($filename, '$lang_select' . ' = ' . '"' . $lang_select . '"' . '; ' . "\n", FILE_APPEND); | file_put_contents($filename, '$lang_select' . ' = ' . '"' . $lang_select . '"' . '; ' . "\n", FILE_APPEND); | 
| file_put_contents($filename, '?> ' . "\n", FILE_APPEND); | file_put_contents($filename, '?> ' . "\n", FILE_APPEND); | 
| header("Location: server_check.php"); | header("Location: server_check.php"); | 
| exit( ); |   | 
| } | } | 
| } | } | 
| else {$bam=FALSE;}  | } | 
| ?> | ?> | 
|   | <form action="install.php" method="post"> | 
|   | Выберите язык приложения: <br/> | 
|   |   <input type="radio" method="post" id="lang_english" name="lang_selection" value="english" checked />  | 
|   |   <label for="lang_english">English</label> | 
|   |   <br> | 
|   |   <input type="radio" method="post" name="lang_selection" value="russian"> Russian</p> | 
|   |  | 
|   | Выберите часовой пояс: <br/> | 
|   | <select type="text" name="timezone_selection"> | 
|   |     <option value="Pacific/Kiritimati">Pacific/Kiritimati +14:00</option> | 
|   |     <option value="Pacific/Tongatapu">Pacific/Tongatapu +13:00</option> | 
|   |     <option value="Pacific/Majuro">Pacific/Majuro +12:00</option> | 
|   |     <option value="Pacific/Pohnpei">Pacific/Pohnpei +11:00</option> | 
|   |     <option value="Australia/Melbourne">Australia/Melbourne +10:00</option>  | 
|   |     <option value="Asia/Tokyo">Asia/Tokyo +09:00</option>  | 
|   |     <option value="Asia/Hong_Kong">Asia/Hong_Kong +08:00</option> | 
|   |     <option value="Asia/Bangkok">Asia/Bangkok +07:00</option>  | 
|   |     <option value="Asia/Bishkek">Asia/Bishkek +06:00</option>  | 
|   |     <option value="Indian/Maldives">Indian/Maldives +05:00</option> | 
|   |     <option value="Asia/Dubai">Asia/Dubai +04:00</option>  | 
|   |     <option value="Europe/Moscow">Europe/Moscow +03:00</option> | 
|   |     <option value="Europe/Helsinki">Europe/Helsinki +02:00</option>  | 
|   |     <option value="Europe/Bratislava">Europe/Bratislava +01:00</option> | 
|   |     <option value="Europe/Dublin">Europe/Dublin +00:00</option> | 
|   |     <option value="Atlantic/Azores">Atlantic/Azores -01:00</option> | 
|   |     <option value="Atlantic/South_Georgia">Atlantic/South_Georgia -02:00</option> | 
|   |     <option value="America/Sao_Paulo">America/Sao_Paulo -03:00</option> | 
|   |     <option value="America/Montserrat">America/Montserrat -04:00</option> | 
|   |     <option value="America/Jamaica">America/Jamaica -05:00</option> | 
|   |     <option value="America/Regina">America/Regina -06:00</option> | 
|   |     <option value="America/Denver">America/Denver -07:00</option> | 
|   |     <option value="America/Vancouver">America/Vancouver -08:00</option> | 
|   |     <option value="America/Sitka">America/Sitka -09:00</option> | 
|   |     <option value="Pacific/Tahiti">Pacific/Tahiti -10:00</option> | 
|   |     <option value="Pacific/Midway">Pacific/Midway -10:00</option> | 
|   | </select> | 
|   | 	<div class = "install_button"> | 
|   | 	<input type="submit" value="Продолжить" name="button_lang_and_time_zone"> | 
|   | 	</div> | 
|   | </form> | 
|   |  | 
| <div class="progressbar"> | <div class="progressbar"> | 
|   <span style="width: 20%"></span> |   <span style="width: 20%"></span> | 
| </div> | </div> | 
| ?> |   | 
| </code> | </code> | 
|   |  | 
|   | Запишем его в тело файла **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?|}} | 
|   |  | 
| <note blue> | <note blue> | 
| <wrap left>← [[software:development:demo:cms:ucms:creating_file_config|8.3. Файл config.php]]</wrap>   | <wrap left>← [[software:development:demo:cms:ucms:creating_file_lang|8.3. Файл lang.php]]</wrap>   | 
| <wrap right>[[software:development:demo:cms:ucms:creating_file_server_check|8.5. Файл server_check.php]]→</wrap> | <wrap right>[[software:development:demo:cms:ucms:creating_file_server_check|8.5. Файл server_check.php]] →</wrap> | 
| </note> | </note> |