Стандартный тип поля Joomla XML - Password

Тип поля password создает защищенное поле ввода, в котором символы маскируются (скрываются точками) для предотвращения подглядывания. В Joomla 4.x, 5.x и 6.x поле автоматически интегрируется с системой Password Policy, предоставляя встроенную проверку сложности пароля и визуальный индикатор надежности (Strength Meter).

Важно: Это поле отвечает только за визуальное скрытие ввода при наборе. Оно не шифрует данные при сохранении. Если значение сохраняется в параметрах (params) или базе данных, оно может храниться в открытом виде, если не реализовано дополнительное хэширование на уровне PHP-кода расширения.

Joomla 3.x Joomla 4.x Joomla 5.x Joomla 6.x

Атрибуты поля

Ниже приведены основные атрибуты, поддерживаемые типом поля . Используйте их внутри тега <field> вашего XML-манифеста.

Атрибут Тип Описание
name string Обязательно. Уникальный системный идентификатор поля. Используется для получения значения в PHP ($input->get('name')).
type string Обязательно. Должно быть равно "password". Определяет тип поля и его поведение (маскировка ввода).
label string Заголовок поля, видимый пользователю. Может быть языковой константой (например, JGLOBAL_PASSWORD) или текстом.
description string Текст подсказки или описания. В Joomla 3 отображался как tooltip при наведении. В Joomla 4/5/6 обычно выводится под полем или в зависимости от макета формы.
required boolean Делает поле обязательным для заполнения. Если true, форма не отправится без значения. Возможные значения: true, false.
validate string Правило валидации данных. Для паролей часто используется validate="password" (проверка сложности) или validate="equals" (для подтверждения пароля). В J4+ интегрировано с политикой паролей ядра.
strengthmeter boolean Включает отображение индикатора сложности пароля (Strength Meter). Работает "из коробки" в Joomla 4/5/6. В Joomla 3.x игнорируется. Значения: true, false.
filter string Фильтр очистки входных данных перед сохранением. Для паролей рекомендуется использовать filter="string", чтобы сохранить спецсимволы, но убрать управляющие байты. Не используйте alnum или cmd.
default string Значение по умолчанию. Внимание: Никогда не указывайте реальный пароль в этом атрибуте в открытом виде в XML-файлах. Обычно оставляется пустым.
showon string Позволяет показывать или скрывать поле динамически в зависимости от значений других полей формы. Пример: showon="enable_password:1". Работает через JavaScript.
maxlength integer Максимальное количество символов, которое можно ввести в поле. Ограничение на уровне HTML.
min_length integer Минимальная длина пароля для валидации. Используется совместно с validate. В J4+ может переопределять глобальные настройки политики паролей.
size integer Визуальная ширина поля ввода в символах. Не ограничивает количество вводимых символов, только отображаемую область.
hint string Текст-подсказка (placeholder), который отображается внутри пустого поля до начала ввода.
autocomplete string Управление автозаполнением браузера. Для полей смены пароля рекомендуется autocomplete="new-password", чтобы браузер предложил сгенерировать новый, а не подставил старый. Для отключения: off.
readonly boolean Режим «только для чтения». Пользователь видит значение, но не может его изменить. Значения: true, false.
disabled boolean Делает поле недоступным. Значение не отправляется на сервер и не сохраняется. Значения: true, false.
class string Дополнительные CSS-классы для стилизации поля. Например, class="form-control input-xlarge".
lock boolean Специфичный атрибут для админ-форм Joomla. Если true, поле заблокировано, но рядом появляется кнопка «Изменить» для разблокировки. Значения: true, false.
autofocus boolean Устанавливает фокус на поле автоматически после загрузки страницы. Значения: true, false.
onchange string Устанавливает фокус на поле автоматически после загрузки страницы. Значения: true, false.
spellcheck boolean Включает или отключает проверку орфографии браузером. Для паролей рекомендуется false. Значения: true, false.
pattern string Регулярное выражение (Regex) для валидации формата пароля на стороне клиента (HTML5). Например, pattern=".{8,}" требует минимум 8 символов.
title string Текст подсказки, который появляется при нарушении правила pattern. Полезно для объяснения требований к паролю.

Визуальные примеры

Ниже представлены скриншоты отображения поля в разных версиях Joomla и темах административной панели.

Joomla 3 Isis
Поле типа Password в настройках Joomla 3.x (шаблон админки Isis)
Классический вид поля в шаблоне Isis.
Joomla 4 / 5 / 6 Cassiopeia (Светлая)
Визуальное отображение поля Password в Joomla 4/5/6 - светлая тема админки Cassiopeia
Современный дизайн Cassiopeia. Светлая тема.
Joomla 4 / 5 / 6 Cassiopeia (Темная)
Визуальное отображение поля Password в Joomla 4/5/6 - темная тема админки Cassiopeia
Темная тема админки. Контрастный текст и темный фон.

Пример использования в XML

Добавьте этот код внутрь формы вашего XML-манифеста. Атрибут type="password" указывает браузеру маскировать вводимые символы, а в Joomla 4+ автоматически активирует встроенную проверку сложности пароля.

<field 
	name="my_password"
	type="password" 
	label="Пароль"
	description="Введите ваш пароль" />

Получение значения в PHP

Значение поля извлекается через объект JInput. Примеры ниже демонстрируют различия в синтаксисе для Joomla 3.x и J4/J5/J6. Для корректной обработки паролей применяется фильтр string, позволяющий использовать спецсимволы без риска инъекций управляющих символов.

// --- ВАРИАНТ ДЛЯ JOOMLA 4 / 5 / 6 (Современный) ---
use Joomla\CMS\Factory;

// Получаем объект ввода через Factory
$input = Factory::getApplication()->input;

// getString() очищает ввод от управляющих символов, но сохраняет спецсимволы пароля (!@#$%)
$myPassword = $input->getString('my_password_field', '');


// --- ВАРИАНТ ДЛЯ JOOMLA 3.x (Устаревший) ---
// В J3 использовался JFactory
$input = JFactory::getApplication()->input;
$myPassword = $input->get('my_password_field', '', 'string'); 

// ИЛИ старым способом (не рекомендуется к использованию в новом коде):
// $myPassword = JRequest::getVar('my_password_field', '', 'post', 'string');


// --- ВАЖНОЕ ПРИМЕЧАНИЕ ---
// Переменная $myPassword теперь содержит "сырой" пароль, введенный пользователем.

// 1. Никогда не выводите это значение на экран (echo, print_r) даже в режиме отладки.
// 2. Используйте эту переменную только для сравнения (password_verify) 
//    или передачи в защищенные методы аутентификации.

Полученная переменная содержит «сырое» значение, введенное пользователем. Используйте её только для безопасной проверки (например, сравнения хэшей) или передачи в защищенные API. Категорически не рекомендуется выводить это значение в лог-файлы, ответы JSON или на экран, даже в режиме отладки.

Совет: Если вы используете это поле для ввода API-ключей или токенов, которые должны храниться в открытом виде (для последующего использования в запросах), убедитесь, что ваше расширение шифрует эти данные перед записью в базу данных или конфигурационный файл. Стандартное поле password не обеспечивает шифрование при сохранении — оно лишь скрывает символы при визуальном вводе.

Подводные камни

  • Хранение в открытом виде: Поле type="password" маскирует ввод только в браузере. Если вы сохраните полученное значение напрямую в базу данных или params.ini без предварительного хэширования или шифрования, пароль будет доступен любому, кто имеет доступ к файлам или БД сайта.
  • Исчезновение значения при ошибке валидации: В Joomla 4/5/6 из соображений безопасности поле пароля не заполняется автоматически предыдущим значением, если форма не прошла валидацию (например, пользователь забыл заполнить другое обязательное поле). Пользователю придется вводить пароль заново. Это стандартное поведение HTML5 и Joomla, а не ошибка.
  • Различия в валидации J3 и J4+: В Joomla 3.x атрибут validate="password" часто требовал наличия отдельного JS-скрипта или плагина для проверки сложности. В Joomla 4/5/6 валидация и индикатор сложности (Strength Meter) встроены в ядро и работают автоматически, если включена политика паролей. Старые скрипты валидации из J3 могут конфликтовать с новыми веб-компонентами.
  • Автозаполнение браузером: Браузеры могут игнорировать маскировку или предлагать сохранить пароль даже в административной части. Для полей с API-ключами или токенами рекомендуется использовать атрибут autocomplete="off" или autocomplete="new-password", чтобы избежать случайной подстановки личных паролей пользователя вместо служебных ключей.
  • Регистрозависимость и пробелы: Фильтр string (используемый по умолчанию при получении через $input->getString()) может обрезывать пробелы в начале и конце строки (trim). Если ваш сервис требует точного совпадения с пробелами внутри пароля, убедитесь, что они не теряются при обработке, хотя большинство стандартов безопасности рекомендуют запрещать пробелы по краям.
0 items Корзина
Консультация по услуге:

Вам нужно оказать услугу по формированию файла с XML полями для Joomla? Заполните форму ниже с информацией о необходимых вам данных и получите цену готового файла с полями Joomla XML