Добавление данных в таблицу базы из AjaxForm и FormIT

Всем привет. Делаю сейчас компонент, в котором пользователи добавляют свои блоги и на них могут подписываться. Застопорился на моменте когда нужно добавлять данные. Решил что через AjaxForm и FormIt надёжнее.

Вообщем делал следующим образом. Вызвал сниппет с такими параметрами:

{'!AjaxForm' | snippet : [
    'snippet' => 'FormIt',
    'form' => '@FILE components/ticketscommunity/form.tpl',
    'redirectTo' => 16,
    'hooks' => 'email,TicketsCommunityHooksBlog',
    'emailSubject' => 'Добавление нового блога "[[+name]]"',
    'emailTo' => 'admin@site.com',
    'validate' => 'alias:required',
    'validationErrorMessage' => 'В форме содержатся ошибки!',
    'successMessage' => 'Сообщение успешно отправлено'
]}

В параметр hooks добавил сниппет TicketsCommunityHooksBlog с таким содержимым:

<?php
$modx->addPackage('ticketscommunity', $modx->getOption('core_path').'components/ticketscommunity/model/');
$request = $modx->newObject('TicketsCommunityBlog');
$request->set('name', $hook->getValue('name'));
$request->set('logo', $hook->getValue('logo'));
$request->set('title', $hook->getValue('title'));
$request->set('description', $hook->getValue('description'));
$request->set('keywords', $hook->getValue('keywords'));
$request->set('introtext', $hook->getValue('introtext'));
$request->set('content', $hook->getValue('content'));
$request->set('alias', $hook->getValue('alias'));
$request->set('uri', $hook->getValue('uri'));
$request->set('createdby', $hook->getValue('createdby'));
$request->save();
return true;
Данные из формы сохраняются в базу, но заметил что если alias писать один и тот же с разными регистрами типа Test и test, они будут добавляться. Может кто подсказать как можно проверять в базе дубли и выдавать сообщение об ошибке через jGrowl?
SEQUEL.ONE
16 сентября 2018, 13:59
modx.pro
2
1 343
+1

Комментарии: 4

Sergey
16 сентября 2018, 17:47
0
Я бы на вашем месте не об этом думал, а о безопасности. Тут во всю идет обсуждение об SQL-injection, а Вы вообще все в базу записываете, даже без какой-либо проверки. Ломанут Ваш сайт, без проблем.
    SEQUEL.ONE
    16 сентября 2018, 19:04
    +1
    Я отфильтровал это дело через htmlspecialchar(). А какого рода проверки делать? Что проверять?
      Sergey
      17 сентября 2018, 13:14
      0
      Я отфильтровал это дело через htmlspecialchar().
      Вообще-то, эта функция ничего не фильтрует и не проверяет.

      А какого рода проверки делать?
      Вот это хотя бы прочтите — Фильтрация данных $_GET и $_POST

      Что проверять?
      Проверять нужно данные которые Вы получаете через форму.

      P.S. Надеюсь меня тут не забанят за ссылки :)
        Янис
        17 сентября 2018, 22:30
        0
        FormIt начиная с версии 2.2.9 «all fields will automatically have html_entities applied», т.е. всё подчищено. Просто данные надо брать не через
        $_POST['name']
        а через
        $hook->getValue('name');
        Подроднее здесь
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    4