Невозможно отправить текст из файла html в файл c

0

Я пытаюсь написать очень простой 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.

PS Если вы хотите увидеть мой файл.html в действии, нажмите здесь, и если вы хотите увидеть его с помощью метода, установленного на POST вместо GETS, нажмите здесь.

Теги:
cgi

1 ответ

1
Лучший ответ

Основная проблема с кодом заключается в том, что input не инициализирован.

Вот почему вы получаете внутреннюю ошибку сервера при использовании POST.

Просто замените char *input; с char *input = (char*)malloc(1000); и он должен работать.

  • 0
    Эй, прости, что не вернулся к тебе раньше. Я задал этот вопрос от имени друга, и они никогда не говорили, что получили ответ! Ваше решение сработало отлично! Я удивлен, что это была такая простая ошибка, учитывая, что он использовал код, предоставленный его профессором, но часто мелочи заставляют нас зацикливаться! В любом случае, еще раз спасибо за вашу помощь!
  • 0
    Совершенно никаких проблем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню