C语言中的Apache模块表单处理

C语言中的Apache模块表单处理,c,forms,apache,apache2,C,Forms,Apache,Apache2,我正在用C实现一个Apache2.0.x模块,以与我们现有的产品进行接口。我需要处理表单数据,很可能是使用POST,但我也想处理GET案例 Nick Kew的书中有一节是关于处理表单数据的。它为POST和GET提供了代码示例,返回表单中键+值对的apr\u散列。parse_form_from_POST编组bucket旅并将其平铺到缓冲区中,而parse_form_from_GET可以简单地引用URL。这两个例程都依赖于parse_form_from_string例程遍历每个分隔字段并将信息提取到

我正在用C实现一个Apache2.0.x模块,以与我们现有的产品进行接口。我需要处理表单数据,很可能是使用POST,但我也想处理GET案例

Nick Kew的书中有一节是关于处理表单数据的。它为POST和GET提供了代码示例,返回表单中键+值对的apr\u散列。parse_form_from_POST编组bucket旅并将其平铺到缓冲区中,而parse_form_from_GET可以简单地引用URL。这两个例程都依赖于parse_form_from_string例程遍历每个分隔字段并将信息提取到哈希表中


这很好,但似乎应该有一种比在我的模块中添加几百行代码更简单的方法。apache、apr或apr util中是否存在将字段名和相关数据从GET或POST表单提取到C代码更容易访问的结构中的模块或例程?我找不到任何相关的东西,但这似乎是一个常见的需求,应该有一个解决方案。

虽然从表面上看,这似乎很常见,但apache上C中的cgi风格的内容处理程序非常罕见。大多数人只使用CGI、FastCGI或各种各样的框架,如mod_perl

我所编写的大多数apache模块都是以适用于每个请求的特定、有针对性的方式修改web服务器的特定行为为目标的


如果可以在apache模块之外编写处理程序,我会鼓励您采用这种策略。

我转而使用G-WAN,它为GET和POST表单(以及许多其他功能,如图表、GIF I/O等)提供透明的ANSI C脚本接口

下面提供了几个AJAX示例


希望有帮助

我还没有尝试过任何解决方案,因为我发现这个问题是因为我自己对“Apache模块”一书中的示例感到失望。但到目前为止,我发现的是。当我研究更多的时候,我会更新这个答案

幸运的是,这似乎是Apache2.4中使用function解决的问题

与您的示例相比,不知道这有多好,但这里有一个例子


这也可能有价值。

这与答案完全相反!为什么我们不应该寻找简单的方法来编写用C进行表单处理的Apache模块呢?在Apache上用C编写表单处理代码就像将用户空间应用程序作为内核模块编写一样。这很难,因为没有人这么做,也不是真的打算这么做。我知道这个问题已经很老了,但现在在2012年,可以使用Apache API函数进行表单解析,所以我认为Apache模块不应该进行表单解析的想法已经过时了。将内容处理程序编写为Apache模块的想法可能并不常见,但在某些情况下,它可能最有意义。无论如何,如果书中的样本足以胜任这项任务,那么答案就不是“不要这样做”,而是“是的,这是最简单的方法”。这很公平。因此,虽然有一个关于如何做的答案,但我仍然建议不要这样做,因为有些人对该项目有一些可接受的补丁。如果你想在C语言中沉沦和肮脏,可能是为了提高速度,在这种情况下,像nginx这样更轻的web服务器是一个更好的方法。我知道在我的例子中,进入C语言的愿望可能更像是“精神病”,而不是其他任何东西谢谢你提到nginx。有趣的选择。我不认为这个回答解决了OP关于用C编写Apache模块的问题,因为Apache的版本早于ap_parse_form_data()函数的引入。(见附录h 20110203.2.3.11-dev)