Обработка форм в Apache в C - PullRequest
       17

Обработка форм в Apache в C

4 голосов
/ 19 сентября 2008

Я реализую модуль Apache 2.0.x на C, чтобы взаимодействовать с существующим у нас продуктом. Мне нужно обработать данные FORM, скорее всего, используя POST, но я также хочу обработать случай GET.

Книга Ника Кью Модули Apache содержит раздел, посвященный обработке данных формы. Он предоставляет примеры кода для POST и GET, которые возвращают apr_hash_t пар ключ + значение в форме. parse_form_from_POST маршаллизирует бригаду ведра и объединяет ее в буфер, в то время как parse_form_from_GET может просто ссылаться на URL. Обе процедуры используют подпрограмму parse_form_from_string для обхода каждого поля с разделителями и извлечения информации в хеш-таблицу.

Это было бы хорошо, но, похоже, должен быть более простой способ сделать это, чем добавить пару сотен строк кода в мой модуль. Существует ли существующий модуль или подпрограммы в apache, apr или apr-util для извлечения имен полей и связанных данных из GET или POST FORM в структуру, к которой C-код может более легко получить доступ? Я не могу найти ничего уместного, но это похоже на общую потребность, для которой должно быть решение.

Ответы [ 3 ]

1 голос
/ 16 декабря 2010

Я перешел на G-WAN, который предлагает прозрачный интерфейс сценариев ANSI C для форм GET и POST (и многих других полезностей, таких как диаграммы, ввод-вывод GIF и т. Д.).

Несколько примеров AJAX доступны на странице разработчика GWAN

Надеюсь, это поможет!

0 голосов
/ 20 октября 2012

Я еще не пробовал никакого решения, так как я нашел этот вопрос в результате моего собственного разочарования в примере, приведенном в книге «Модули Apache». Но вот что я нашел, пока. Я обновлю этот ответ, когда я исследую больше.

К счастью, похоже, что теперь это решаемая проблема в Apache 2.4 с использованием функции ap_parse_form_data.

Понятия не имею, насколько хорошо это работает по сравнению с вашим примером, но вот гораздо более краткая read_post функция .

Также возможно, что mod_form может иметь значение.

0 голосов
/ 19 сентября 2008

Хотя на первый взгляд это может показаться распространенным, обработчики содержимого в стиле cgi в C на apache довольно редки. Большинство людей просто используют CGI, FastCGI или множество фреймворков, таких как mod_perl.

Большинство написанных мной модулей C apache нацелены на изменение определенного поведения веб-сервера особым целевым образом, применимым к каждому запросу.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...