gpt4 book ai didi

c++ - 如何同步 CGI 编程?

转载 作者:太空狗 更新时间:2023-10-29 20:29:58 24 4
gpt4 key购买 nike

我编写了一个简单的网络表单,它将获取用户信息(通过 POST)并将其插入数据库。这不是我的典型编程类型,但它足够基本,我没有遇到任何问题。

无论如何,Web 表单存在于 html 页面中,并且非常标准。类似于以下内容(简化示例):

<form method="post" action="/cgi-bin/submit_form" enctype="x-www-form-encoded" id="frm">
<input id="txtName" type="text" />
<input id="txtPhone" type="text" />
<input id="btnSubmit" type="submit" value="Submit" />
</form>

我有一个 C++ 应用程序 ( cgi-bin/submit_form ),它在提交时运行并将数据存储在数据库中。

我写了一个非常基本的 CGI 库,主要是解析输出,看起来像这样:

txtName=<name>&txtPhone=<phone>&btnSubmit=Submit

库将其解析为 map<string, string>像这样:

myMap["txtName"] = "John";
myMap["txtPhone"] = "1.800.555.5555";

然后很容易将其放入数据库。但是,很明显我的应用程序完全依赖于 html 元素变量名称(txtName、txtPhone)。如果其中任何一项发生更改,我的应用程序就会突然停止工作。


我的问题是:如何将从 CGI 获取数据的过程同步到服务器端应用程序中?

我很幸运,我同时负责 html 和服务器脚本。但肯定会有一个人管理网站而另一个人管理脚本的情况,他们必须以某种方式进行协调以确保不会发生任何不良情况。

在这些情况下,ICD可能用过了。例如,当传递 XML 数据时,可以使用 XSD定义数据结构。

CGI 编程有这样的事情吗?我非常害怕我的应用程序如此脆弱和容易被破坏。

最佳答案

您指的是 HTML 元素名称与 CGI 脚本解析的字段之间的变化?

至于像 XSD 这样正式的东西,我不相信。

通常,这是同一类解决方案

  • Unix shell 命令行系统;
  • 环境变量;
  • HTTP 和 SMTP header 字段;

... 即 POST 值是完全自由格式的字符串,由您的服务器随意读取、忽略或提示。 (就像您可以在您的环境或 SMTP header 中自由地包含“垃圾”一样,直到您将它们发送到的任何系统的容忍限度为止。)

就是说,如果您确实有一个单独的设计师编写漂亮的 HTML 文档,另一个人编写他们发布的应用程序,则有许多特别的协作方式。就个人而言,我通常使用 Perl 的 POD 或 Javadoc(或适用于您的语言的任何适当/类似的内联文档工具)来记录可接受的参数和限制,并将它们作为漂亮的 HTML 页面提供给艺术部门(或任何人)可以假装阅读。

如果您更确切地说,是指 SQL 表列,那么有许多工具可以直接从 SQL 服务器生成相当不错的文档,从 SHOW CREATE TABLE foo 向上...... SQL DDL本身就是 XSD 顺序的架构。

关于c++ - 如何同步 CGI 编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8524812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com