将HTML表单数据传递给C脚本和CGI标准行为

时间:2018-06-06 00:59:56

标签: html c cgi

我试图在C中创建一个登录脚本。我想知道,我如何将HTML表单数据传递给我的后端c脚本。我是C的新手(来自perl)

这样做?

<form action="test.c"> or <form action="test.a"> 

脚本如何在用户名和密码之间明确区分?早些时候,我只需要这样做(在perl中):

$username = $cgi->param("username");

我现在怎样才能在C中这样做。我试图避免使用CGI。

编辑1:

  1. 我似乎还需要知道,CGI基本上是如何工作的(简而言之)。我猜,浏览器是CGI的一种编译器?如果没有,那么它是apache吗?

  2. 由于C不是解释语言,CGI如何与C一起使用?在perl中,我可以做到:

    #!/usr/bin/perl
    print "Content-type: text/html\n\n";
    print "Hello, World.";
    
  3. 我如何在C中执行此操作?

    Edit2:好的,我在stackoverflow上的cgi标签下找到了之前回答的问题。

    这似乎是投票最多的一个:What is Common Gateway Interface (CGI)?

    但它仍然没有清楚一些事情,我在这里问。

    由于RFC3875只是一个信息性文档,并且没有最终的标准。

    1. 谁实施CGI协议?谁定义了其标准行为&#34;在Apache等服务器上。

    2. 在现代环境中,C文件如何与CGI配合使用。请详细说明使用&#34; Hello World!&#34;作为对表单提交的回复。

1 个答案:

答案 0 :(得分:2)

试图帮助你有点困难。你的问题,特别是声明&#34;我试图完全避免使用CGI&#34;暗示您错过了概念性概述。为了避免CGI&#39;您需要将其替换为接收,解析和响应HTTP请求的机制。这意味着(可能)编写HTTP服务器。 C是一种编译语言。当你想知道你能不能做到的时候 行动=&#34; test.c的&#34;它告诉我,你错过了C不是解释性语言的事实。

您可以使用类似tiny httpd的内容来帮助您入门。

这个关于cgi using C的网站会对您有所帮助。如何实施CGI最终由实施者自行决定。一个hello world程序就像

的编译可执行文件一样简单
#include <stdio.h>
int main(void) {
  printf("Content-Type: text/plain;charset=us-ascii\n\n");
  printf("Hello world\n\n");
  return 0;
}