Использование CSRF токена для защиты формы
Доброго времени суток, в документации есть пример использования CSRF токена но он как я понял только для формы вида <? echo $form -> display(array("name", "question")); ?>, а как использовать
для уже готовой html формы эту функцию ? В примере нужно чтоб была переменная $fields с формой в виде массива, а если у меня уже есть html скелет формы как мне применить эту функцию к моей форме ? Извиняюсь если задаю тупые вопросы с php не давно начал разбираться.
$form = new Form($fields); $form -> useTokenCSRF(); if(!empty($_POST)) $form -> getDataFromPost() -> validate(); //Внутри html тэга <form> <? echo $form -> displayTokenCSFR(); ?>
Никита, добрый день, давайте сейчас все по порядку пройдем:
1. У вас форма состоящая только из html кода и без обработчика (action)
2. displayTokenCSFR() это часть фреймворка MV и работает только с объектом формы new Form(...)
3. Если вы не хотите использовать $form -> display(), тогда вам нужно сделать симбиоз html формы и объекта формы MV, чтобы фреймворк вашу форму обработал
4. Вам в любом случае понадобится объект формы с описанием ваших полей как в секции "Форма без привязки к модели" http://mv-framework.ru/sozdanie-form/
5. А также будет нужна обработка как тут http://mv-framework.ru/metody-form/ разница будет только в выводе на экран самой формы
<? $form = new Form($fields); $form -> useTokenCSRF(); ?> <form action="" method="post"> <input type="text" name="name" value="<? echo $form -> name; ?>" /> <textarea name="question"><? echo $form -> question; ?></textarea> <? echo $form -> displayTokenCSRF(); ?> <p><input type="submit" value="Отправить" /></p> </form> //Или еще можно выводить поля так, если у вас своя html разметка <? echo $form -> displayFieldHtml("name"); echo $form -> displayFieldHtml("question"); ?>
Спасибо