无法将文本从html文件发送到c文件

时间:2014-03-26 00:24:13

标签: html c cgi

我正在尝试编写一个非常基本的html文件和一个cgi脚本。 HTML文件将有一个文本框和一个按钮。该按钮将文本框的内容发送到cgi文件(没有文本框的内容显示在URL中),这将简单地打印出文本框的内容。而不是发生这种情况,我的cgi文件只打印出' - |'不管我放在文本框中的内容。

这是我的.html文件:

<html>

<head>
  <title>template webpage</title>
</head>

<body bgcolor="white" text="black">

  <form action="http://cgi.cs.mcgill.ca/~eross12/cgi-bin/results.cgi" method="GETS">
    <div><label>Input: <input name="data" size="5"></label></div>
    <div><input type="submit" value="Send!"></div>
  </form>

</body>
</html>

这是我的c文件应该从html文件接收文本:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
  char *data;
  char *input;
  printf("%s%c%c\n","Content-Type:text/html;charset=iso-8859-1",13,10);
  printf("<TITLE>Received Data</TITLE>\n");
  printf("<H3>Received Data</H3>\n");
  data = getenv("QUERY_STRING");
  if(data == NULL)
    printf("<P>Error! Error in passing data from form to script.");
  else
  {
    fgets(input,256,stdin);
   printf("<P>The input is: \"%s\"",input);
  }
 return 0;
}

从我在网上看到的内容我相信,如果我想使用fgets,我的表单中的'方法'应该是POST而不是GETS但是如果我进行了更改,当我点击我的按钮时出现内部服务器错误。如果有人能告诉我需要做出哪些改变,我将非常感激!或者,如果您可以向我展示一个基本的.html文件和基本的c脚本,它执行我正在描述的内容也很棒!遗憾的是,我不能使用javascript或PHP或其他各种其他工具,我们看到人们推荐这些工具来回应stackoverflow上的其他问题。

P.S。如果您想查看我的.html文件,请点击here,如果您希望将方法设置为POST而不是GETS,请点击here

1 个答案:

答案 0 :(得分:1)

代码的主要问题是input未初始化。

这就是使用POST时出现内部服务器错误的原因。

只需将char *input;替换为char *input = (char*)malloc(1000);即可。