За последние 24 часа нас посетили 16534 программиста и 1578 роботов. Сейчас ищут 814 программистов ...

MVC и реализация капчи

Тема в разделе "PHP для новичков", создана пользователем VLK, 3 янв 2015.

  1. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Такая вопрос, допустим делаю блог с использованием MVC, хочется все сделать по уму, есть следующие папки:
    bootstrap - тут у меня основные файлы, которые всегда надо загружать, константные переменные, автолоадер и т.п.
    classes - базовые классы model, view, controller, а так же прочие вспомогательные классы (для работы с БД, обработчик ошибок, для теста и т.д.)
    и собственно папки models, views, controllers, пока что все.

    Надо реализовать капчу, только куда, в каком виде, раньше, те капчи что я видел, представляли из себя 2 файла, первый - класс обслуживания (создание формы, проверка введенной капчи), второй - файл .php картинка капчи, так вот вопрос, вы бы как реализовывали капчу, как model, view, controller? ну я себе представлял все что реализовывается в виде MVC это что то таке крупное, вывод статей из БД, регистрация, авторизация, а капча это что то такое мелкое, вроде как не заслуживает реализации в виде MVC :) или же класс засунуть в classes, а с картинкой как быть?

    Ну и вообще в целом, как быть с такими вещами типа капчи, которые вроде как не заслуживают реализации в виде MVC, но при этом занимают больше одного файла (на ум пока пришла только капча, по-этому про нее и спрашиваю).
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    А вы хотите сами рисовать капчу? Или использовать чью-то готовую, типа гугла? Если сами, то напрашивается модель (готовит данные, проверяет правильность), контроллер (отрабатывает запрос картинки, передаёт данные во вьюху). И вьюха - занимается рисованием. Без последний, с учётом специфики работы с изображением php можно обойтись (немного сложно представить взаимодействие)
     
  3. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Сделать хелпер и инклудить не?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Посмотри как всё реализовано в symfony2 или Yii2.
    MVC это только один из паттернов, их много и используют их несколько одновременно.
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Если че, за пример беру ныне почивший фреимворк codeigniter
    http://code-igniter.ru/user_guide/helpers/security_helper.html

    Всякая дребедень что не влизает в понятие mvc пишется как хелпер. Можешь обозвать либой или пакетом собственно суть не меняется.
     
  6. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Я хочу что бы у меня все было систематизировано, принцип будет такой, будет идти базовый вариант капчи (или еще чего то), в ней капча будет сама рисоваться, т.е. все будет самодостаточным, так же возможно будет поставить дополнения (модули), т.е. можно будет написать свою капчу, дать этому классу такое же название как у капчи по умолчанию и в итоге за место, капчи по умолчанию будет грузится та что модуль.

    вопрос собственно как это реализовывать грамотнее.
    я пошарил в Yii2 и что то не нашел где эта капча лежит, да бы посмотреть как там она устроена.
     
  7. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А стоит ли? Если хочешь контроль может просто интерфейс создашь и наследуй от какого то базового класса?
    Как то расширять капчу, как то... твое дело.

    yii когда то бегло просматривал и из коробки этого вроде не было, зато куча экстеншинов
    http://www.yiiframework.com/extensions/?tag=captcha
     
  8. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    погодь :)
    Не совсем понимаю, т.е. в базовой версии не будет капчи, а будет только интерфейс капчи? а что бы использовать капчу мне надо будет ставить капчу в виде модуля(плагина)?
     
  9. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Определитесь товарищ:) Я не писал что не будет, я говорю то что ты написал. Есть базовая капча. Она использует интерфейс и какой то базовый класс. Да, если хочешь контроль то создаешь интерфейс и говоришь что все капчи должны использовать этот интерфейс и базовый класс хз но туда можно что то пихнуть. Все зависит от реализации. Если это не вписывается в твое представление о прекрасном, то не надо.
    Вообще я не представляю кто будет расширять твою капчу.

    Будет капча из коробки или ставится как плагин тебе решать.

    Эксперементируй потом покажи что получилось:)

    З.Ы.
    Интерфейсы используются для того что бы у всех классов их использующих был общий интерфейс - методы имели общие название и т.д. Базовый класс для какой то базовой инициализации вынесение обшего кода в 1 место. Использовать их или нет тебе решать. Если они будут в поставке т.е. в ядре движка не вижу ничего плохого. Если прям мега супер хочешь вперед на изучение движком фреимворков.

    Добавлено спустя 19 минут 43 секунды:
    P.S.
    Нравился мне codeigneter за легкость
    https://ellislab.com/codeigniter/user-guide/helpers/captcha_helper.html
    https://ellislab.com/codeigniter/user-guide/general/helpers.html

    Добавлено спустя 21 секунду:
    В современных движках без поллитра сложно(((
     
  10. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    наверное как раз с этим беда.

    Добавлено спустя 11 минут:
    Вот смотрите, есть базовый вариант блога, а вообще это CMS, в ней базовый вариант капчи (класс называется допустим MyCaptcha с методами getForm и checkCode, думаю объяснять что есть что не надо), так же в этом базовом варианте есть регистрация, авторизация, где будет использоваться эта капча, т.е. будет класс MyCaptcha и методы getForm и checkCode. Капча базовая будет чмошная, допустим на белом фоне, черными буквами без всяких искажений будет код, вот и все.

    Мне надо так, я делаю модуль, модуль - капча, я его называю так же как и базовую капчу - MyCaptcha, в ней присутствуют те же методы - getForm и checkCode и в итоге у меня в базовой регистрации будет загружаться не базовая капча, а та, что модуль, нормальная, с цветным фоном, с искажениями и т.д.

    как то так я это вижу.
     
  11. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Объединять не связанные сущности точно не надо.

    Добавлено спустя 1 минуту 2 секунды:
    Капча это капча. Она отвечает за капчу. А где будет усппользоваться это должно быть на выбор разработчика, чем гибче тем лучше.

    Добавлено спустя 3 минуты 5 секунд:
    В внутренностях соверменных фреимворках я не копался так как вообще слазить с пхп намерен, но как легкий для понимания пример я тебе привел.
    Может не идеал но просто удобно. Собственно как я сечас вижу там сделано так как ты хочешь. Посмотри понравится используй.
     
  12. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    нескромный вопрос, слазить на что? (что в замен)

    Правильно ли я понимаю эту фразу, писать базовую регистрацию без всяких капчей, а если понадобится, бери и дописывай?

    ну я с этого фрейма и срисовал принцип, есть база есть не база, сначала ищем не в базовом варианте, если нет, потом в базовом, это что касаемо классов, так и планирую делать.
     
  13. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Руби или питон. Начал было писать один сервис на питоне (django) потом забросил, другие дела и т.д. потом начал руби изучать понравился, может на нем напишу сервис.

    Капча это капча. Ею могут воспользоваться не только при регистрации. Это должна быть отдельная сущность так сказать.

    Ну дерзай. Codeigniter мне нравился своей простотой. Может есть что то получше хз уже мало интересуюсь как в современных движках все устроенно.
     
  14. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Не совсем понимаю, конечно я буду капчу использовать не только при регистрации, но и везде, где она понадобится, она и есть отдельная сущность, т.е. отдельный класс, отдельный черный ящик :)

    и любой кто будет писать какой то еще модуль, допустим доску объявлений, смело может использовать класс MyCaptcha и методы getForm и checkCode, не опасаясь, что данный плагин установлен он или нет.