Вставка CSRF в код вывода плагина Есть решение

Здравствуйте,

Вот, функция в плагине, которая выводит форму:

public function formblock( $request_type = null ) {
			$html = '
			<form action="" onsubmit="yaCounter28912135.reachGoal (\'request\')" method="post">
			
			<input type="hidden" name="inmtoo_feedback" value="inmtoo_feedback" />
			<input type="hidden" name="requesttype" value="'.htmlspecialchars($request_type).'"/>
			<div class="form-group">
			<label>Ваше имя</label>
			<input type="text" name="name" class="form-control" required/>
			</div>
			<div class="form-group">
			<label>Ваш номер телефона</label>
			<input type="text" name="phone" class="form-control" required/>
			</div>
			<div class="form-group">
			<label>Подробнее</label>
			<textarea name="details" class="form-control" ></textarea>
			</div>
			<p><small>Нажимая "Отправить", Вы соглашаетесь с тем, что Ваши данные будут обработаны.</small></p>
			<input type="submit" class="btn btn-primary" value="Отправить" />
			</form>
			';
			
			return $html;
		}

Если вставляют в $html такую конструкцию {$wa->csrf()}, то естественно, ничего не происходит, эта фраза выводится как есть. Если в тело переменной html помещаю .$wa->csrf()., то само собой, ошибка. Вопрос, как мне поместить в код этого шаблона CSRF? Спасибо

2 ответа

  • 1
    Алексей Webasyst 1 августа 2019 14:53 # Решение

    {$wa->csrf()} это код для Smarty, у вас же он тут не применяется.
    .$wa->csrf(). - код PHP но переменная $wa не определена

    если посмотрите на исходный код функции то можете просто вставить код

    '<input type="hidden" name="_csrf" value="'.htmlspecialchars(waRequest::cookie('_csrf', '')).'" />';

  • 1
    Михаил Ушенин Webasyst 1 августа 2019 14:55 #

    {$wa->csrf()} — это метод для вызова в шаблонах Smarty. Вы же пишете код на PHP. Значит, логично предположить, что и использовать нужно PHP-эквивалент этого метода. Искать его нужно в файле wa-system/view/waViewHelper.class.php.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите