Разработка на PHP (Шаблонизатор): Как правильно передать статус капчи и клиентский ключ Яндекса в систему через метод tpl()->set()?
При разработке на PHP с использованием шаблонизатора метод `tpl()->set()` позволяет передавать переменные из бизнес-логики в шаблон представления. Рассмотрим, как правильно передать статус капчи и клиентский ключ Яндекс SmartCaptcha.
**Базовый синтаксис метода tpl()->set()**
Метод принимает имя переменной и её значение:
php
tpl()->set(‘имя_переменной’, $значение);
**Передача клиентского ключа Яндекс SmartCaptcha**
Клиентский ключ (sitekey) — это публичный ключ, который вы получаете в кабинете Яндекс Cloud. Его нужно передать в шаблон для инициализации виджета капчи на фронтенде:
php
// Определяем ключ (лучше хранить в конфигурации)
$yandexCaptchaClientKey = defined(‘YANDEX_CAPTCHA_SITEKEY’)
? YANDEX_CAPTCHA_SITEKEY
: ‘ваш_клиентский_ключ’;
// Передаём ключ в шаблон
tpl()->set(‘yandex_captcha_key’, $yandexCaptchaClientKey);
**Передача статуса капчи**
Статус капчи обычно отражает, прошёл ли пользователь проверку, или содержит сообщение об ошибке:
php
// Пример проверки токена капчи на сервере
$captchaToken = $_POST[‘smart-token’] ?? »;
$captchaStatus = false;
$captchaError = »;
if (!empty($captchaToken)) {
$response = verifyCaptchaToken($captchaToken, YANDEX_CAPTCHA_SECRET_KEY);
$captchaStatus = $response[‘status’] === ‘ok’;
$captchaError = $captchaStatus ? » : ‘Проверка капчи не пройдена’;
}
// Передаём статус и сообщение об ошибке в шаблон
tpl()->set(‘captcha_status’, $captchaStatus);
tpl()->set(‘captcha_error’, $captchaError);
**Комплексная передача всех данных капчи**
Для удобства можно передать все данные одним массивом или несколькими отдельными вызовами:
php
// Вариант 1: несколько отдельных вызовов
tpl()->set(‘captcha_sitekey’, $yandexCaptchaClientKey);
tpl()->set(‘captcha_verified’, $captchaStatus);
tpl()->set(‘captcha_message’, $captchaError);
// Вариант 2: передача массивом (если шаблонизатор поддерживает)
tpl()->set(‘captcha’, [
‘sitekey’ => $yandexCaptchaClientKey,
‘verified’ => $captchaStatus,
‘error’ => $captchaError,
]);
**Использование переменных в шаблоне**
В HTML-шаблоне переданные переменные используются для подключения виджета:
html
{if $captcha_error}
{$captcha_error}
{/if}
**Рекомендации по безопасности**
1. Никогда не передавайте секретный ключ (server key) в шаблон — он должен использоваться только на сервере.
2. Храните ключи в конфигурационных файлах или переменных окружения, а не в коде.
3. Всегда валидируйте токен капчи на сервере, не полагаясь только на клиентскую проверку.
4. Используйте HTTPS для защиты передачи токена.
Такой подход обеспечивает корректную интеграцию Яндекс SmartCaptcha с вашим PHP-приложением через шаблонизатор.
