|
|
|
Насколько безопасно использование такого универсального движка?
|
|||
|---|---|---|---|
|
#18+
Привет всем! Необходимо написать универсальный обработчик для формирования SQL-запросов к БД для различных модулей. У каждого модуля предполагается одна таблица. Таким образом, надо принимать входящие переменные из форм, обрабатывать их (парсить на соответствие типу, регулярному выражению, длине [если это строка], допустимому значению [если это число] и т.д.). Далее сформировать SQL-запрос (select, insert, update, delete) к БД (в зависимости от обработки). Вопрос в том, насколько выгоден такой подход для программирования и насколько возможно последующее обновление/сопровождение системы в будующем, если например, потребуется что-то добавить новое? Подделитесь пожалуйста опытом, кто сталкивался с подобными разработками. Заранее благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2005, 17:55 |
|
||
|
Насколько безопасно использование такого универсального движка?
|
|||
|---|---|---|---|
|
#18+
я что-то похожее делал, но только INSERT/UPDATE/DELETE запросов. Был базовый класс DBObject - он формировал эти запросы. И для каждой таблицы писался дочерний класс. В нем только перечислялся список полей таблицы которые (с некоторыми ограничениями, например Логин нельзя UPDATE-тить), писался код проверки входящих данных, код модификации данных (например пароль перед записью надо хешировать) Вобщем-то подход стандартный. Но у каждого свои пути реализации. От генерирования SELECT-запросов я отказался (точнее генерил только простые запросы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2005, 18:08 |
|
||
|
Насколько безопасно использование такого универсального движка?
|
|||
|---|---|---|---|
|
#18+
А проблемы начинаются когда есть несколько взаимосвязанных объектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2005, 18:12 |
|
||
|
Насколько безопасно использование такого универсального движка?
|
|||
|---|---|---|---|
|
#18+
.-.-.-.-.-А проблемы начинаются когда есть несколько взаимосвязанных объектов. Например, когда несколько таблиц? Я правильно вас понял? Добавлю, что интересует сам подход к такому проектированию, а в последующем кодингу. Стоит ли двигаться в этом направлении или это будет пустая трата времени, т.к. потом может оказаться, что система очень сложна в сопровождении и каких-либо аптейдах? Или же было бы оптимальным выбором писать все-таки для каждого модуля (для каждой таблицы) свои обработчики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2005, 10:14 |
|
||
|
Насколько безопасно использование такого универсального движка?
|
|||
|---|---|---|---|
|
#18+
И для каждой таблицы писался дочерний класс. В нем только перечислялся список полей таблицы которые (с некоторыми ограничениями, например Логин нельзя UPDATE-тить), писался код проверки входящих данных, код модификации данных (например пароль перед записью надо хешировать) несколько странный подход ИМХО 1) список полей для большинства БД можно получить как метаданные по имени таблицы 2) проверять данные можно в одном месте ну или написать (если вам угодно) класс (хотя можно отлично и без него ИМХО) и там писать методы проверки на нужные таблицы (а можно максимольно предусмотреть все в базе и может методов не понадобится) 3) md5 чаще всего можно и в базе делать или например ввести условие что все поля содержащие в названии _pswd автоматически хэшировать кстати так можно устроить и проверку других полей (например загрузка файлов _img_upload - картинки, _zip_upload - архивы и неважно в какой таблице вы заведете такую калонку система должна на это реагировать адекватно) формочки тоже былобы хорошо рисавать автоматически по методанным, но увы это не всегда позволяет задача (тогда пытаться заюзать шаблоны готовые беее или свои :-))) уххх) ну это мысли навеянные разработкой таких вот самых штук. админ для сайта однозначно писать так, если это некий итерфейс какого нибудь менеджера по продажам с куччей всевозможных формочек галочек и кнопочек тогда шаблоны и на каждую форму свой обработчик события (при большом количестве формочек > 40 затютюхаешся подкручивать этот супер универсальный аппарат который ты так хорошо спроектировал да чтото не предусмотрел ;-) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2005, 12:59 |
|
||
|
Насколько безопасно использование такого универсального движка?
|
|||
|---|---|---|---|
|
#18+
тоже думал когда то такое чудо писать и даже почти дописал пока не дошло что это глупая затея и куда целесообразнее и пожалуй быстрее написать класс для работы с БД а потом просто вставлять одну строчку mysql запроса дляселектов апдейтов и прочего + это куда нагляднее... вот такая вот имхА :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2005, 18:09 |
|
||
|
Насколько безопасно использование такого универсального движка?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2005, 10:18 |
|
||
|
Насколько безопасно использование такого универсального движка?
|
|||
|---|---|---|---|
|
#18+
vfabr 1) список полей для большинства БД можно получить как метаданные по имени таблицы 2) проверять данные можно в одном месте ну или написать (если вам угодно) класс (хотя можно отлично и без него ИМХО) и там писать методы проверки на нужные таблицы (а можно максимольно предусмотреть все в базе и может методов не понадобится) 3) md5 чаще всего можно и в базе делать или например ввести условие что все поля содержащие в названии _pswd автоматически хэшировать кстати так можно устроить и проверку других полей (например загрузка файлов _img_upload - картинки, _zip_upload - архивы и неважно в какой таблице вы заведете такую калонку система должна на это реагировать адекватно) 1. у меня с полями хранится еще и некоторые их свойства. 2. мне так проще 3. Делать запросы типа INSERT INTO (...) VALUES(..., MD5('$passwd')); я не хочу - считаю их менее безопасными Подробнее свой старый подход я описал http://forums.webscript.ru/showthread.php?s=&postid=116983#post116983 Сейчас у меня изменилось представление об ORM но некоторые вещи из старого подхода я оставил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2005, 11:55 |
|
||
|
Насколько безопасно использование такого универсального движка?
|
|||
|---|---|---|---|
|
#18+
.-.-.-.-.-1. у меня с полями хранится еще и некоторые их свойства. 2. мне так проще 3. Делать запросы типа INSERT INTO (...) VALUES(..., MD5('$passwd')); я не хочу - считаю их менее безопасными Подробнее свой старый подход я описал http://forums.webscript.ru/showthread.php?s=&postid=116983#post116983 Сейчас у меня изменилось представление об ORM но некоторые вещи из старого подхода я оставил Прочитал я Ваш тред на webscript.ru и понял, что изобретаю велосипед. Правда до конца подход так и остался не ясен. Где можно поподробнее почитать про ORM (Object Role Modeling)? Вообще идея очень интересная и пока я только на пути к этому :). И еще вопрос: какие бы вы могли дать советы по написанию обработки данных для различных структур таблиц, представленных в виде иерархических структур, "один-ко-многим", "многие-ко-многим"? Чувствую, что придется придумывать оригинальное решение, но не уверен возможно ли вообще такое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2005, 12:36 |
|
||
|
Насколько безопасно использование такого универсального движка?
|
|||
|---|---|---|---|
|
#18+
есть книга http://www.books.ru/shop/books/156126 (на английском можно скачать в сети) Есть слайды из доклада fisher-а : http://fisher.phpclub.net/ORM-slides/index.html http://www.lenvendo.ru/ru/info/links/ - просто ссылки по теме. ORM - Object Relation Mapping PS Мое мнение - многие из этих источников абсолютно не учитывают специфику web Наверное один из лучших примеров как надо писать ORM - Active Record (http://ar.rubyonrails.com/) ИМХО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2005, 12:55 |
|
||
|
Насколько безопасно использование такого универсального движка?
|
|||
|---|---|---|---|
|
#18+
ИхТиандр И еще вопрос: какие бы вы могли дать советы по написанию обработки данных для различных структур таблиц, представленных в виде иерархических структур, "один-ко-многим", "многие-ко-многим"? Чувствую, что придется придумывать оригинальное решение, но не уверен возможно ли вообще такое. Отвечу только про иерархические данные - здесь я поклонник алгоритма Nested sets. В остальном у меня пока нет четкого подхода (и я пока, временно, не занимаюсь ORM-ами) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2005, 12:58 |
|
||
|
Насколько безопасно использование такого универсального движка?
|
|||
|---|---|---|---|
|
#18+
.-.-.-.-.-А проблемы начинаются когда есть несколько взаимосвязанных объектов.ВЫ оказались очень правы! :)) Похоже щас именно на таком этапе разработки, что возникли реальные трудности со связанными объектами. Чорт..... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2005, 18:19 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=468&tid=1478025]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 227ms |
| total: | 419ms |

| 0 / 0 |
