2014-03-26 67 views
0

我想寫一個非常基本的HTML文件和CGI腳本。 HTML文件將有一個文本框和一個按鈕。該按鈕會將文本框的內容發送到cgi文件(沒有顯示在URL中的文本框的內容),該文件將簡單地打印出文本框的內容。取而代之的是,我的cgi文件只是打印出' - |'不管我放在文本框中。無法從HTML文件發送文本到C文件

這裏是我的.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> 

這裏是應該被接收的HTML文件中的文本我的C文件:

#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或其他各種工具,我曾經見過人們在回覆其他關於計算器的問題時推薦使用這些工具。

P.S.如果您想查看我的.html文件,請單擊here,如果您想要使用設置爲POST而不是GETS的方法查看它,請單擊here

回答

0

代碼的主要問題是input未初始化。

這就是爲什麼在使用POST時出現內部服務器錯誤。

只需用char *input = (char*)malloc(1000);代替char *input;,它應該可以工作。

+0

嘿,很抱歉沒有及早回覆你。我代表朋友問了這個問題,他們從未說過他們得到了迴應!你的解決方案完美運作 考慮到他使用他的教授提供的代碼,我很驚訝這是一個簡單的錯誤,但它往往是小事情,讓我們循環! 無論如何,再次感謝您的幫助! – everett980

+0

沒有問題。 – merlyn