【问题标题】:Unable to send text from html file to c file无法将文本从 html 文件发送到 c 文件
【发布时间】:2014-03-26 13:35:59
【问题描述】:

我正在尝试编写一个非常基本的 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 上的其他问题时推荐的各种其他工具。

附:如果您想查看我的 .html 文件的运行情况,请单击 here,如果您想查看方法设置为 POST 而不是 GETS,请单击 here

【问题讨论】:

    标签: html c cgi


    【解决方案1】:

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

    这就是您在使用 POST 时收到内部服务器错误的原因。

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

    【讨论】:

    • 您好,很抱歉没有尽快回复您。我代表朋友问了这个问题,他们从来没有说他们得到了答复!您的解决方案完美运行!考虑到他使用了他的教授提供的代码,我很惊讶这是一个如此简单的错误,但往往是一些小事情让我们陷入了困境!无论如何,再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-04-25
    • 2021-10-20
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多