C语言中getenv(" QUERY_STRING")的问题

时间:2014-11-04 17:36:50

标签: html c xampp cgi query-string

我是这个社区的新成员,但很长一段时间我在这里寻找解决问题的方法,但是现在是我表达我的问题的时候了。我不能再这样做了:P 好的,我必须这样做: 写一个HTML表单,让我插入姓名,姓氏,用户名,密码和电子邮件,然后用按钮提交。然后我必须用C语言编写一个CGI,如果存在用户名和密码,则会创建一个欢迎页面并显示带有欢迎消息的HTML页面。另外,它将显示一个登录页面,新用户存储在我已经完成DTD的XML文件中。 现在我的问题是(我认为)那个CGI文件形成不好或我的设置不好......

HTML中的表单是:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset="iso-8859-1"> 
    <title>Esegui l'accesso</title>
</head>

<body>
    <p>Inserisci i seguenti dati:</p>
    <form action="http://127.0.0.1/cgi-bin/accesso.cgi" method="GET">
    <label>Nome:<label><br />
    <input type="text" name="nome">
    <br />
    <label>Cognome:</label><br />
    <input type="text" name="cognome">
    <br />
    <label>Username:</label><br />
    <input type="text" name="username">
    <br />
    <label>Password:</label><br />
    <input type="text" name="password">
    <br />
    <input type="submit" name="invioDati" value="Accedi">
    </form>
</body>
</html>

现在我写的CGI:

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

void main(){

char *data, nome[50], cognome[50];
data=getenv("QUERY_STRING"); //I sould get a string something like
//nome="value"&cognome="value"&username="value"&password="value"
printf("Content-Type:'text/plain'; charset='us-ascii'\n\n");
printf("<html>\n");
printf("<head>\n");
printf("<title>Benvenuto</title>\n");
printf("</head>");
printf("<body>\n");
if(data == NULL){
printf("<p>Error! Error in passing data from form to script.</p>"); 
}
else{
sscanf(data, "nome=%[0-9a-zA-Z]&cognome=%[0-9a-zA-Z]",&nome,&cognome);    
printf("<H2>Benvenuto %s %s</H2>",nome,cognome);
}
printf("</body>\n");
printf("</html>");
system("PAUSE");
return(0);
}

使用此代码,我仍然没有尝试存储数据,只是尝试显示欢迎消息并检查CGI是否有效。 但是我总是收到一条服务器错误消息,告诉我服务器可能超载或者CGI文件出错。

我正在使用XAMPP所以我将HTML表单文件放在htdocs文件夹中,然后在我用扩展名.cgi重命名它之后将源文件放在cgi-bin文件夹中。

我希望你能帮助我解决这个问题因为这是一整天我撞到了键盘:D 附:对不起,如果我的英语有时可能不那么好:)。

0 个答案:

没有答案