| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
| software:development:demo:cms:ucms:creating_file_lang_and_time_zone [2025/05/03 16:11] – внешнее изменение 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 |
|---|
| :&11: **Пимечание:** \\ | :&11: **Пимечание:** \\ |
| Код приведенный ниже, это всего лишь обертка нашей формы, к классу **button_lang_and_time_zone** позже | Код приведенный ниже, это всего лишь обертка нашей формы, к классу **button_lang_and_time_zone** позже |
| будут подключенны стили ранее созданного (пока пустого) файла **install.css** в директории **css**. | будут подключенны стили ранее созданного (пока пустого) файла [[software:development:demo:cms:ucms:creating_file_install_css|install.css]] в директории **css**. |
| <code> | <code> |
| <div class = "button_lang_and_time_zone"> | <div class = "button_lang_and_time_zone"> |
| Это мы позже и пропишем в файле **install.css**. | Это мы позже и пропишем в файле **install.css**. |
| </note> | </note> |
| **div class = "button_lang_and_time_zone"** - создан нами заранее, что-бы в Главе **Файл install.css** при указании | **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** для "обертывания" нашей кнопки. | вазвращатся в Файл **lang_and_time_zone.php** для "обертывания" нашей кнопки. |
| ===== Логика форма ===== | ===== Логика формы ===== |
| У нас имеется переключатель языков с выбранным по умолчанию Английским языком и поле выбора часовой зоны, | У нас имеется переключатель языков с выбранным по умолчанию Английским языком и поле выбора часовой зоны, |
| с **Pacific/Kiritimati +14:00** по умолчанию (первая в списке выбора) и кнопка "Продолжить".\\ | с **Pacific/Kiritimati +14:00** по умолчанию (первая в списке выбора) и кнопка "Продолжить".\\ |
| <code> | <code> |
| if(isset($_POST['lang_selection']) && isset($_POST['timezone_selection'])) | if(isset($_POST['lang_selection']) && isset($_POST['timezone_selection'])) |
| {тут мы проверим, нажатие кнопки и запишем логику создания файла config.php} | {тут мы проверим, нажатие кнопки и запишем логику создания файла config.txt} |
| </code> | </code> |
| * **%%if(...)%%** - логический оператор условия **ЕСЛИ** | * **%%if(...)%%** - логический оператор условия **ЕСЛИ** |
| if(isset($_POST['button_lang_and_time_zone'])) {$bam="ИСТИНА"; | if(isset($_POST['button_lang_and_time_zone'])) {$bam="ИСТИНА"; |
| echo "Кнопка нажата и переменной bam присвоенно значение = " . "$bam"; | echo "Кнопка нажата и переменной bam присвоенно значение = " . "$bam"; |
| | file_put_contents("config.txt","Hello World. Testing!"); |
| | echo "Файл config.txt создан и данные записаны!"; |
| } else {$bam="ЛОЖЬ"; | } else {$bam="ЛОЖЬ"; |
| echo "Кнопка не нажата и переменной bam присвоенно значение = " . "$bam"; | echo "Кнопка не нажата и переменной bam присвоенно значение = " . "$bam"; |
| * **%%$bam="ЛОЖЬ"%%** - переменной **%%$bam%%** присвоили значение ="ЛОЖЬ" | * **%%$bam="ЛОЖЬ"%%** - переменной **%%$bam%%** присвоили значение ="ЛОЖЬ" |
| * **%%echo "...."%%** - вывели текст нажатия кнопки и значение "ЛОЖЬ" присвоенное переменной **%%$bam%%** | * **%%echo "...."%%** - вывели текст нажатия кнопки и значение "ЛОЖЬ" присвоенное переменной **%%$bam%%** |
| Описанный выше код проверит условие: | * **%%file_put_contents%%** - функция записи данных в файл запишет **Hello World. Testing!** в файл **config.txt** |
| | |
| | Описанный выше код проверит условие:\\ |
| ЕСЛИ кнопка нажата, присвоится переменной значение ИСТИНА и выведиться текст "Кнопка нажата" и значение переменной, | ЕСЛИ кнопка нажата, присвоится переменной значение ИСТИНА и выведиться текст "Кнопка нажата" и значение переменной, |
| | а так же в этой-же директории будет создан файл **config.txt** и в него будет записано сообщение: Hello World. Testing!, |
| ИНАЧЕ присвоится той же переменной значение ЛОЖЬ и выведиться текст "Кнопка не нажата" и значение переменной | ИНАЧЕ присвоится той же переменной значение ЛОЖЬ и выведиться текст "Кнопка не нажата" и значение переменной |
| |
| Создадим в директории **/ucms/test/** файл **test_3.php**, объединим выше разобранный нами код и запишем во | Создадим в директории **/ucms/test/** файл **test_3.php**, объединим выше разобранный нами код и запишем во |
| вновь созданный файл следующее: | вновь созданный файл следующее: |
| | <code php test_3.php> |
| | <!-- test_3.php --> |
| |
| | <form action="test_3.php" method="post"> |
| Создадим в директории **/ucms/library/install/** файл **lang_and_time_zone.php** и запишем в него | |
| следующий код: | |
| <code php lang_and_time_zone.php> | |
| <form action="install.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 = "button_lang_and_time_zone"> | <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> |