脚本输出结束-CGI/HTML

脚本输出结束-CGI/HTML,html,c,forms,apache,cgi,Html,C,Forms,Apache,Cgi,我们被要求在HTML/CGI中创建一个登录页面。我想出了这个密码: #include <stdio.h> #include <stdlib.h> #include <string.h> char username[20]; char password[20]; char* extract_value(char* data,int data_len, char* name, char* dest); int main() { int size;

我们被要求在HTML/CGI中创建一个登录页面。我想出了这个密码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char username[20];
char password[20];

char* extract_value(char* data,int data_len, char* name, char* dest);

int main()
{ 
    int size;
    char *buff;

    printf("Content-type:text/html\n\n");
    printf("<html><body>");
    buff = getenv("CONTENT_LENGTH");
    if (buff)
        size = atoi(buff);

    char data[size+1];
    int i;
    for(i=0;i<size;i++)
            data[i]=fgetc(stdin);
    data[size]='\0';

    extract_value(data,size+1,"username",username);
    extract_value(data,size+1,"password",password);

    printf("</body></html>");
}

char* extract_value(char* data,int data_len, char* name, char* dest)
{
    int i,j,k,flag,carry;
    for(i=0;i<data_len;i++){
        flag=1;
        for(j=0,k=0;name[j]!='\0';j++,k++)
        {
            if(j>=data_len)
            {
                i=data_len;
                break;
            }
            else if(name[j]!=data[i+k]){
                flag=0;
                break;
            }
           carry=i+k+2;
        }
        if(flag)
        {
        j=carry;
            for(k=0;data[j]!='&'&&data[j]!='\0';j++,k++)
            {
            dest[k]=data[j];
            }
        dest[k]='\0';
        break;
    }
}
return dest;
}

你知道如何解决这类问题吗?非常感谢

尝试更改
printf(“内容类型:text/html\n\n”)
to
printf(“内容类型:text/html\r\n\r\n”)

尝试从命令行运行程序,看看会发生什么。那么它是否如预期的那样工作?您是否分别测试了
提取\u值
功能?另外,从技术上讲,您发送的换行符应该是
“\r\n”
<!DOCTYPE html>
<html>
<body>
<form action='/cgi-bin/11.cgi'>
    Username: <input type="text" name="user"><br>
    Password: <input type="password" name ="password" id="password"     maxlength="10">
<input type ="submit" value='Submit'>
</form>
</body>
</html>
Server error!

The server encountered an internal error and was unable to complete your request.

Error message: 
End of script output before headers: 11.cgi

If you think this is a server error, please contact the webmaster.