X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Обработчик форм
Degradator
Degradator
Topic Starter сообщение 22.2.2014, 19:14; Ответить: Degradator
Сообщение #1


День добрый.
Пишу класс FormProcessor, который реализует две публик функции - создать форму и вставить данные. Итак, сейчас вопрос по первой функции - создать форму. Она принимает параметр - строку - название таблицы из базы данных, и зная название таблицы, выводит вот такую беду:

<form id="form_name" method="POST">
<input type="hidden" name="form_table" value="pages">
p_name: <input type="text" class="form_text" name="form[p_name]"><br>
p_url: <input type="text" class="form_text" name="form[p_url]"><br>
p_parent: <input type="text" class="form_int" name="form[p_parent]"><br>
p_position: <input type="text" class="form_int" name="form[p_position]"><br>
p_date: <input type="date" class="form_date" name="form[p_date]"><br>
p_last_modified: <input type="date" class="form_date" name="form[p_last_modified]"><br>
<input type="submit" class="form_submit">
</form>


То есть, тут есть все поля и название выбранной таблицы, мне остается только удалить ненужные, и застилить все это дело. Но получается так, что в форме html мы имеем структуры базы данных (в данном случае одной таблицы) сайта. Насколько это критично в отношении безопастности?

Предворяя вопрос - зачем выводить поля и название таблицы в форме -
Для того, чтобы написать один универсальный обработчик форм, который будет сразу все добавлять или обновлять
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 22.2.2014, 20:30; Ответить: miketomlin
Сообщение #2


Я не понял, зачем текстовым полям давать такие сложные названия. Пусть они называются просто p_name, p_url и т.п.

Естественно, при получении данных из формы названия таблицы и полей проверяете на допустимые символы, а название таблицы еще и на допустимость самого названия (чтобы предотвратить попытки перезаписи таблиц, которые для этого не предназначены).


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Degradator
Degradator
Topic Starter сообщение 22.2.2014, 21:34; Ответить: Degradator
Сообщение #3


Чтобы можно было сделать так
[PHP]foreach($_POST['form'] as $field=>$value){
}[/PHP]
Если вы можете сказать, как по другому определить что пришло из запроса, при этом отделить название таблицы от названий полей, и чтобы это не было 100 строчным велосипедом, готов услышать как это делается.
Хотя можно сделать вот так например

[PHP]foreach($_POST as $field=>$value){
if($field == 'form_name')
continue;
}[/PHP]
Но это не спортивно. Особенно если передавать данные не постом а гетом.
Добавил в базу две таблицы, одна содержит описания таблиц, доступных к обработке форм, другая содержит описания полей, которые требуется обработать
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 23.2.2014, 10:51; Ответить: miketomlin
Сообщение #4


(Degradator @ 23.2.2014, 00:34) *
Если вы можете сказать, как по другому определить что пришло из запроса, при этом отделить название таблицы от названий полей, и чтобы это не было 100 строчным велосипедом, готов услышать как это делается.
Хотя можно сделать вот так например

[PHP]foreach($_POST as $field=>$value){
if($field == 'form_name')
continue;
}[/PHP]
Но это не спортивно. Особенно если передавать данные не постом а гетом.
Многое зависит от способа обработки недопустимых названий полей. Все вполне спортивно, если давать полям таблицы имена, отличные от form_table. form_table может "съедаться", как недопустимое имя поля. Еще для вашего форыча почему-то приходит на ум жесткий вариант типа: unset($_POST['form_table']); форыч.

Добавил в базу две таблицы, одна содержит описания таблиц, доступных к обработке форм, другая содержит описания полей, которые требуется обработать
Хорошо. Часто бывает необходимо обновлять из формы не все поля подряд, а только некоторые. Хотя для первой функции можно было использовать в качестве доп. параметров названия нужных полей. Кстати, как вариант можно определять поля, которые наоборот нельзя обрабатывать.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) stepFORM – конструктор опросов и форм
0 VOLKODAV 910 10.2.2020, 19:44
автор: VOLKODAV
Открытая тема (нет новых ответов) Как перенести правила переадресации из .htaccess в php обработчик nginx?
0 KrisGuseva 2096 28.12.2019, 7:33
автор: KrisGuseva
Открытая тема (нет новых ответов) Нужны люди! Для заполнения онлайн форм.
1 ZaDrotom 1884 9.2.2018, 21:38
автор: ura1205
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыuCalc – конструктор калькуляторов и форм
0 VOLKODAV 1909 29.9.2017, 1:04
автор: VOLKODAV
Открытая тема (нет новых ответов) Ищу знатока MODX и контактных форм (отправка сообщений с сайта)
0 by_roXe 1844 31.5.2017, 14:35
автор: by_roXe


 



RSS Текстовая версия Сейчас: 16.4.2024, 13:01
Дизайн