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

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


software:development:demo:cms:ucms:creating_file_lang_and_time_zone

Это старая версия документа!


8.4. Файл lang_and_time_zone.php

Этот файл выполняет функцию начального экрана установщика и предоставляет пользователю выбор язык приложения и временную зону, а также создает файл конфигурации config.php в директории /includes/ и записывает в него переменные $lang_select и $timezone_select, полученные из форм выбора.

  • $lang_select - выбор языка приложения (русский и англиский, при необходимости можно добавлять переводы)
  • $timezone_select - время сервера приложения (время написания поста, время отправки сообщений и т.д.)

Формы

<form action="install.php" method="post">
</form>
  • form action=«install.php» - указывает обработчик, к которому обращаются данные формы при их отправке на сервер.

В нашем случае это переход к файлу install.php (подробнее файл install.php будет описан в Главе 8.6).

:!: Внимание:
Файл lang_and_time_zone.php будет подключен внутри и будет отображать данные в теле файла install.php, поэтому form action=«install.php» будет просто обновлять страницу при отправки данных на сервер.
  • method=«post» - в отличие от метода GET, который используется для получения данных, POST служит для отправки данных на сервер.

В файле lang_and_time_zone.php у нас будет два вида формы для наглядности

  • input type=«radio» - переключатель
  • select type=«text» - выпадающий список

Переключатель

Используется для примера, при добавлении большего количества переводов приложения, целесообразнее, использовать «выпадающий список».

<input type="radio" method="post" name="lang_selection" value="english" checked />
<label for="lang_english"> English</label>
<br>
  • 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="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>
  • select type=«text» - выпадающий список
  • name=«timezone_selection» - имя формы
  • option value= - определитель значение пункта списка, которое будет отправлено на сервер.

Идентификатор формы, надпись для элимента и перенос на следующую строку не указываем т.к. в примере выше мы это сделали для «Чистоты кода» и на логику работы кода это не влияет (т.е. для наглядности примера, а именно: select type=«text» - определяет выпадающий список, name=«timezone_selection» - имя формы из которого данные получит переменная и option value= - значение пункта формы).

Значение пункта данной формы - это всего лишь время добавляемое к времени часового пояса места установки сервера (т.е. -2, -1, 0, +1 и т.д.) и мы могли бы это записать, но для наглядности пропишем именно обозначения «таймзон». Полный список зон можно выбрать из формы ниже:

Данная форма выбора будет рассмотрена в Приложении C этого руководства, пока же нас интересует 26 часовых поясов для выбора (от -11 до +14).

    <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>
:&11: Пимечание:
Данный код приложения, это всего лишь установщик выводимого времени и нам нет смысла создавать отдельный файл timezones.php с массивом со всеми 418 часовыми зонами, т.к. установщик - это не основное приложение, а визуально понятный сборщик данных для корректной работы нашего приложения. Файл timezones.php с массивом будет описан в Приложении C этого руководства.

Кнопка

 
	<div class = "button_lang_and_time_zone">
	<input type="submit" value="Продолжить" name="button_lang_and_time_zone">
	</div>
  • input - интерактивный элемент управления
  • type= - тип элемента для отображения
  • «submit» - кнопка для отправки формы
  • value= - значение элемента управления, в нашем случае это название кнопки «Продолжить»
  • name=«lang_and_time_zone» - имя формы, которое отправляется вместе с данными формы
:&11: Пимечание:
Код приведенный ниже, это всего лишь обертка нашей формы, к классу button_lang_and_time_zone позже будут подключенны стили ранее созданного (пока пустого) файла install.css в директории css.
 
	<div class = "button_lang_and_time_zone">
	</div>

Кнопку «Назад» логично расположить по левому краю формы, а кнопку «Вперед» или «Продолжить» по правому. Это мы позже и пропишем в файле install.css.

div class = «button_lang_and_time_zone» - создан нами заранее, что-бы в Главе Файл install.css при указании стиля кнопки соблюсти последовательность написания данного руководства и нам в дальнейшем не прийдется вазвращатся в Файл lang_and_time_zone.php для «обертывания» нашей кнопки.

Логика форма

У нас имеется переключатель языков с выбранным по умолчанию Английским языком и поле выбора часовой зоны, с Pacific/Kiritimati +14:00 по умолчанию (первая в списке выбора) и кнопка «Продолжить».
При нажатии кнопки будет проверенно условие, что выбор произведен, либо оставлен по умолчанию (это нам понадобиться позже для того, чтобы по умолчанию программа вывела нам язык и часовую зону сервера). Следом будет создан файл конфигурации приложения config.php и в него запишется наш выбор в виде объявленных переменных $lang_select и $timezone_select. После этого приложение направит нас к файлу проверки сервера server_check.php

<?php
$lang_select = $_POST['lang_selection'];
$timezone_select = $_POST['timezone_selection'];
  • <?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 определены

if(isset($_POST['lang_selection']) && isset($_POST['timezone_selection']))
{тут мы проверим, нажатие кнопки и запишем логику создания файла config.php}
  • 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";
} 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

Описанный выше код проверит условие: ЕСЛИ кнопка нажата, присвоится переменной значение ИСТИНА и выведиться текст «Кнопка нажата» и значение переменной, ИНАЧЕ присвоится той же переменной значение ЛОЖЬ и выведиться текст «Кнопка не нажата» и значение переменной

Файл test_3

Создадим в директории /ucms/test/ файл test_3.php, объединим выше разобранный нами код и запишем во вновь созданный файл следующее:

Создадим в директории /ucms/library/install/ файл lang_and_time_zone.php и запишем в него следующий код:

lang_and_time_zone.php
<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="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>
	<div class = "button_lang_and_time_zone">
	<input type="submit" value="Продолжить" name="button">
	</div>
</form>
<?php
$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'])) {$bam=TRUE;
//добавляем текст в конец файла config.php
$filename = 'config.php';
file_put_contents($filename, '<?php ' . "\n", FILE_APPEND);
file_put_contents($filename, '$lang_select' . ' = ' . '"' . $lang_select . '"' . '; ' . "\n", FILE_APPEND);
file_put_contents($filename, '$timezone_select' . ' = ' . '"' . $timezone_select . '"' . '; ' . "\n", FILE_APPEND);
file_put_contents($filename, '?> ' . "\n", FILE_APPEND);
header("Location: server_check.php");
exit( );
}
}
else {$bam=FALSE;}
 
?>
<div class="progressbar">
  <span style="width: 20%"></span>
</div>
?>
Только авторизованные участники могут оставлять комментарии.
software/development/demo/cms/ucms/creating_file_lang_and_time_zone.1746277876.txt.gz · Последнее изменение: 127.0.0.1